17 months agoThermometer: show current monthly income in entire euros
Sybren A. Stüvel [Tue, 26 Mar 2019 10:56:53 +0000 (11:56 +0100)]
Thermometer: show current monthly income in entire euros

18 months agoMembership credits: show '-anonymous-' as name when no name is given
Sybren A. Stüvel [Thu, 7 Mar 2019 11:17:37 +0000 (12:17 +0100)]
Membership credits: show '-anonymous-' as name when no name is given

Probably it's better to mark the membership as private, but this at least
looks better than 'None'.

18 months agoUpdated styling for corporate membership credits
Sybren A. Stüvel [Thu, 7 Mar 2019 11:17:26 +0000 (12:17 +0100)]
Updated styling for corporate membership credits

This hardly changes the styling when using images (which is the default),
but now when a membership does not have an image, the name is shown big
enough to match the attention the images are getting.

18 months agoCorrectly render membership credits without logo/url on front page
Sybren A. Stüvel [Thu, 7 Mar 2019 11:02:39 +0000 (12:02 +0100)]
Correctly render membership credits without logo/url on front page

I've reduced duplicate code in the template by moving the rendering to a
custom template tag. Now all credits are rendered in the same way. Fields
that should be empty (given the membership's level) are set to `None`
before feeding the membership to the front-end.

19 months agoExtended the list of IP-addresses for which we shouldn't do geo-lookups
Sybren A. Stüvel [Thu, 14 Feb 2019 09:41:14 +0000 (10:41 +0100)]
Extended the list of IP-addresses for which we shouldn't do geo-lookups

The IP address can (apparently) be 'unknown' or just the empty string, in
which case we shouldn't do a geo lookup (it'll fail for sure anyway).

19 months agoFix crash when the current view cannot be determined.
Sybren A. Stüvel [Thu, 14 Feb 2019 09:40:36 +0000 (10:40 +0100)]
Fix crash when the current view cannot be determined.

The view being undeterminable could be caused by other problems, but at
least now we don't add to those.

20 months agoDon't show payment info on managed memberships
Sybren A. Stüvel [Thu, 3 Jan 2019 13:07:40 +0000 (14:07 +0100)]
Don't show payment info on managed memberships

20 months agoPrevent accessing subscriptions of anonymous user
Sybren A. Stüvel [Thu, 3 Jan 2019 11:55:25 +0000 (12:55 +0100)]
Prevent accessing subscriptions of anonymous user

20 months agoLog charge errors at INFO level
Sybren A. Stüvel [Thu, 3 Jan 2019 11:40:13 +0000 (12:40 +0100)]
Log charge errors at INFO level

Such errors happen very frequently (not enough money on a credit card, etc.)
so they shouldn't trigger Sentry events or send mails to admins.

20 months agoPrevent extending managed memberships
Sybren A. Stüvel [Thu, 3 Jan 2019 11:37:52 +0000 (12:37 +0100)]
Prevent extending managed memberships

Owners of a managed membership should NOT see the 'Extend your membership'

20 months agoMembership admin: allow searching by membership ID
Sybren A. Stüvel [Thu, 3 Jan 2019 11:34:26 +0000 (12:34 +0100)]
Membership admin: allow searching by membership ID

21 months agoAllow admins to download last order PDF from a Membership
Sybren A. Stüvel [Thu, 20 Dec 2018 14:06:10 +0000 (15:06 +0100)]
Allow admins to download last order PDF from a Membership

This allows filtering on membership level before trying to find the PDF.

21 months agoAdded hack to allow admins to get order receipts in PDF form from the admin
Sybren A. Stüvel [Thu, 20 Dec 2018 13:53:42 +0000 (14:53 +0100)]
Added hack to allow admins to get order receipts in PDF form from the admin

This adds another dependency of Looper on Blender Fund, which isn't nice
but necessary for now.

21 months agoUse TCP/IP sockets instead of UNIX domain sockets
Sybren A. Stüvel [Thu, 20 Dec 2018 09:41:48 +0000 (10:41 +0100)]
Use TCP/IP sockets instead of UNIX domain sockets

Turns out those are slightly slower but more reliable.

21 months agoBlender ID Badger API: use user ID instead of email address
Sybren A. Stüvel [Tue, 18 Dec 2018 17:38:25 +0000 (18:38 +0100)]
Blender ID Badger API: use user ID instead of email address

This allows people to change their email address and things will keep

Will break heavily when we try to deal with users of whom we don't have
their Blender ID UID, but that's good.

21 months agoAdded missing Looper migration
Sybren A. Stüvel [Tue, 18 Dec 2018 17:37:04 +0000 (18:37 +0100)]
Added missing Looper migration

21 months agoPrevent revoking Blender ID badges from system user
Sybren A. Stüvel [Tue, 18 Dec 2018 15:52:26 +0000 (16:52 +0100)]
Prevent revoking Blender ID badges from system user

Same as 3ca5efaefa163b3509087cd3e39dce377fec3ec8 but then for revoking

21 months agoUpdate BWA
Pablo Vazquez [Mon, 10 Dec 2018 20:11:39 +0000 (21:11 +0100)]
Update BWA

21 months agoUI: Flip overlapping thermometer label.
Pablo Vazquez [Mon, 10 Dec 2018 20:04:00 +0000 (21:04 +0100)]
UI: Flip overlapping thermometer label.

Fixes T59085

21 months agoUI: CSS tweaks to landing page
Francesco Siddi [Wed, 5 Dec 2018 18:59:21 +0000 (19:59 +0100)]
UI: CSS tweaks to landing page

21 months agoPDF Receipt: include bank details when it's a bank transfer
Sybren A. Stüvel [Wed, 28 Nov 2018 13:41:48 +0000 (14:41 +0100)]
PDF Receipt: include bank details when it's a bank transfer

21 months agoPDF receipt: include Foundation's name, address, and VAT number
Sybren A. Stüvel [Wed, 28 Nov 2018 13:33:08 +0000 (14:33 +0100)]
PDF receipt: include Foundation's name, address, and VAT number

21 months agoCopied Sentry settings from production to the example code
Sybren A. Stüvel [Wed, 28 Nov 2018 08:39:07 +0000 (09:39 +0100)]
Copied Sentry settings from production to the example code

This adds explicit logging configuration. It's the same as the default
logging config (see the [Sentry documentation](,
but with a raised `event_level` so that warnings are also sent to Sentry
(rather than only errors).

21 months agoTest multiple users with payment method for the Bank gateway
Sybren A. Stüvel [Wed, 28 Nov 2018 08:37:12 +0000 (09:37 +0100)]
Test multiple users with payment method for the Bank gateway

We had an issue in production with a troublesome uniqueness constraint in
the database (side-effect of some less-than-optimal manual migration in
the past) where only a single user could have a Bank payment method. This
wasn't reproducible in the test database because it's frequently recreated,
but it felt like a good idea to simply cover this case in a test anyway,
as the Bank gateway is somewhat special (ignores nonces, gives everybody
the same token 'bank').

21 months agoFixed the BF logo in the receipt PDF
Sybren A. Stüvel [Tue, 27 Nov 2018 09:40:31 +0000 (10:40 +0100)]
Fixed the BF logo in the receipt PDF

This was broken because of the cache busting introduced in 2f0eba4. It
seems that the finders expect a filename without the MD5 sum in it, but
that's already done by the {% static %} tag, so we have to take it out

22 months agoInclude glyphicons-halflings-regular font files in webstatic
Sybren A. Stüvel [Fri, 23 Nov 2018 13:08:59 +0000 (14:08 +0100)]
Include glyphicons-halflings-regular font files in webstatic

These are referenced by Bootstrap-SASS. Even though we don't use them
directly, they are still searched for by ' collectstatic' because
of the cache busting process.

Previously I tried to include the `node_modules` directory in
`STATICFILES_DIRS`; this works until we build the docker image, which
doesn't include `node_modules`.

22 months agoCache busting for static files
Sybren A. Stüvel [Fri, 23 Nov 2018 12:49:41 +0000 (13:49 +0100)]
Cache busting for static files

The Django built-in `ManifestStaticFilesStorage` class takes care of this.
However, it only works when running ` collectstatic`, so for
unit tests the default storage class is used.

22 months agoMove all unit test setting overrides to common test superclass
Sybren A. Stüvel [Fri, 23 Nov 2018 11:59:42 +0000 (12:59 +0100)]
Move all unit test setting overrides to common test superclass

This allows us to set some more settings globally in one go, without having
to inspect on a test-by-test basis where it is needed.

22 months agoAdded unittest for membership URL without protocol
Sybren A. Stüvel [Fri, 23 Nov 2018 11:24:56 +0000 (12:24 +0100)]
Added unittest for membership URL without protocol

Django already adds 'http://'; by having a unit test a change in this
behaviour will be noticed.

22 months agoCheckout Form: Don't clear the fields on show/hide.
Pablo Vazquez [Fri, 23 Nov 2018 11:04:29 +0000 (12:04 +0100)]
Checkout Form: Don't clear the fields on show/hide.

22 months agoUI: More responsive fixes.
Pablo Vazquez [Thu, 22 Nov 2018 20:03:33 +0000 (21:03 +0100)]
UI: More responsive fixes.

22 months agoUI: Mobile fixes and improvements.
Pablo Vazquez [Thu, 22 Nov 2018 19:55:18 +0000 (20:55 +0100)]
UI: Mobile fixes and improvements.

22 months agoUI Checkout: Show all Billing Address fields on demand.
Pablo Vazquez [Thu, 22 Nov 2018 19:22:07 +0000 (20:22 +0100)]
UI Checkout: Show all Billing Address fields on demand.

22 months agoUI Landing: Style adjustment on credits.
Pablo Vazquez [Thu, 22 Nov 2018 19:20:33 +0000 (20:20 +0100)]
UI Landing: Style adjustment on credits.

22 months agoUI: Minor text and layout changes in Payment Method Change/Replace
Pablo Vazquez [Thu, 22 Nov 2018 19:20:14 +0000 (20:20 +0100)]
UI: Minor text and layout changes in Payment Method Change/Replace

22 months agoUI Landing: rename anchor links
Pablo Vazquez [Thu, 22 Nov 2018 19:19:42 +0000 (20:19 +0100)]
UI Landing: rename anchor links

22 months agoUpdate Blender Web Assets
Pablo Vazquez [Thu, 22 Nov 2018 19:19:11 +0000 (20:19 +0100)]
Update Blender Web Assets

22 months agoUI: On the sidebar move Billing Address after Personal Info
Pablo Vazquez [Thu, 22 Nov 2018 19:18:58 +0000 (20:18 +0100)]
UI: On the sidebar move Billing Address after Personal Info

22 months agoUI: CSS tweaks to braintree form.
Pablo Vazquez [Thu, 22 Nov 2018 19:18:22 +0000 (20:18 +0100)]
UI: CSS tweaks to braintree form.

22 months agoRemoved debug log
Sybren A. Stüvel [Thu, 22 Nov 2018 14:45:31 +0000 (15:45 +0100)]
Removed debug log

22 months agoPorted 'replace payment method' page to new gateway selector HTML/JS
Sybren A. Stüvel [Thu, 22 Nov 2018 14:41:42 +0000 (15:41 +0100)]
Ported 'replace payment method' page to new gateway selector HTML/JS

22 months agoBetter handling of Braintree JavaScript error responses
Sybren A. Stüvel [Thu, 22 Nov 2018 14:10:41 +0000 (15:10 +0100)]
Better handling of Braintree JavaScript error responses

Instead of trying to find error messages in hardcoded-and-then-checked
properties, we simply recurse through the error object and concatenate
any 'message' property we find.

22 months agoOnly call $.select2() if necessary
Sybren A. Stüvel [Thu, 22 Nov 2018 14:24:24 +0000 (15:24 +0100)]
Only call $.select2() if necessary

Probably this bit of code should move to where it's required, and out of
the base template. No time to really look into that now, though.

22 months agoProperly show bank transfers in payment methods list
Sybren A. Stüvel [Thu, 22 Nov 2018 14:13:13 +0000 (15:13 +0100)]
Properly show bank transfers in payment methods list

22 months agoCorrectly set PaymentMethod.method_type
Sybren A. Stüvel [Thu, 22 Nov 2018 14:10:18 +0000 (15:10 +0100)]
Correctly set PaymentMethod.method_type

Previously we didn't do this, and thus all payment methods had type 'cc' as
this was the default. I've removed the default, as there is no reason to
assume 'cc' over any other when there is no explicit value passed. I've
also allowed blank values so that we can handle unknown types. Not ideal,
but I think it's better to be a bit more flexible.

When the user visits their payment methods page, the method_types are
automatically corrected with info from BrainTree.

22 months agoTell people to include the subscription nr in their bank transfer
Sybren A. Stüvel [Wed, 21 Nov 2018 15:10:19 +0000 (16:10 +0100)]
Tell people to include the subscription nr in their bank transfer

The subscription number doesn't change between orders, so that means that
they can keep the same description for a recurring payment.

22 months agoIncrease LOOPER_ORDER_RETRY_AFTER from 1 day to 2 days
Sybren A. Stüvel [Tue, 20 Nov 2018 16:19:28 +0000 (17:19 +0100)]
Increase LOOPER_ORDER_RETRY_AFTER from 1 day to 2 days

This gives people (including us) some more time to solve payment issues.
Having 2 days also prevents all attempts from being in the same weekend
(i.e. a Friday, Saturday, and Sunday evening charge was possible with only
one day of 'retry after' duration).

22 months agoAdded Sentry integration
Sybren A. Stüvel [Tue, 20 Nov 2018 16:03:17 +0000 (17:03 +0100)]
Added Sentry integration

sentry_sdk replaces raven.

22 months agoPrevent badge assignment to the system user
Sybren A. Stüvel [Tue, 20 Nov 2018 15:38:16 +0000 (16:38 +0100)]
Prevent badge assignment to the system user

22 months agoIntroducing gtag
Francesco Siddi [Thu, 15 Nov 2018 14:36:59 +0000 (15:36 +0100)]
Introducing gtag

22 months agoTweak payment method form label
Francesco Siddi [Thu, 15 Nov 2018 14:31:03 +0000 (15:31 +0100)]
Tweak payment method form label

22 months agoOnly allow extending memberships when it can be charged
Sybren A. Stüvel [Tue, 13 Nov 2018 16:57:04 +0000 (17:57 +0100)]
Only allow extending memberships when it can be charged

Without this check, pending-cancellation memberships would be extendable,
which is kind of weird.

22 months agoAdded missing deploy-time config for bank transfers
Sybren A. Stüvel [Tue, 13 Nov 2018 16:46:57 +0000 (17:46 +0100)]
Added missing deploy-time config for bank transfers

22 months agoUpgraded Wagtail from custom-rolled version to 2.3 release
Sybren A. Stüvel [Tue, 13 Nov 2018 16:35:12 +0000 (17:35 +0100)]
Upgraded Wagtail from custom-rolled version to 2.3 release

22 months agoFormatting
Sybren A. Stüvel [Tue, 13 Nov 2018 15:47:18 +0000 (16:47 +0100)]

22 months agoAdded type annotation
Sybren A. Stüvel [Tue, 13 Nov 2018 15:47:08 +0000 (16:47 +0100)]
Added type annotation

22 months agoAllow the admin to set some extra text for each payment gateway
Sybren A. Stüvel [Tue, 13 Nov 2018 15:47:00 +0000 (16:47 +0100)]
Allow the admin to set some extra text for each payment gateway

This allows us to write "do your bank transfer" and "this is only manual".

22 months agoOnly show 'membership cancelled' if the subscription was cancelled
Sybren A. Stüvel [Tue, 13 Nov 2018 15:01:36 +0000 (16:01 +0100)]
Only show 'membership cancelled' if the subscription was cancelled

22 months agoNicer label for gateway selector
Sybren A. Stüvel [Tue, 13 Nov 2018 15:01:25 +0000 (16:01 +0100)]
Nicer label for gateway selector

22 months agoFixed membership extension payment page
Sybren A. Stüvel [Tue, 13 Nov 2018 15:01:17 +0000 (16:01 +0100)]
Fixed membership extension payment page

22 months agoFixed payment form for extending memberships
Sybren A. Stüvel [Tue, 13 Nov 2018 14:53:57 +0000 (15:53 +0100)]
Fixed payment form for extending memberships

22 months agoMore address fields are now optional
Sybren A. Stüvel [Tue, 13 Nov 2018 14:53:46 +0000 (15:53 +0100)]
More address fields are now optional

22 months agoFixed Pug error
Sybren A. Stüvel [Tue, 13 Nov 2018 13:49:06 +0000 (14:49 +0100)]
Fixed Pug error

22 months agoT57751: Streamline Login Flow
Sybren A. Stüvel [Tue, 13 Nov 2018 13:35:11 +0000 (14:35 +0100)]
T57751: Streamline Login Flow

- Choosing a plan variation doesn't require logging in any more.
- Checkout out anonymously now shows a simplified page allowing the user to
  choose the plan variation + a login button.

22 months agoImplemented manual bank payments
Sybren A. Stüvel [Fri, 9 Nov 2018 17:08:30 +0000 (18:08 +0100)]
Implemented manual bank payments

- New payment gateway 'bank'.
- Show gateway choice in payment forms.
- Paying by bank only supports manual.
- Changed braintree to only support automatic.
- Switching between gateways now also switches collection method for the
  subscription and any still-payable (e.g. 'created' and 'soft-failed')
- The admin now has an action to bulk-mark orders as 'paid'.
- After completing the order, an email is sent with bank details.

22 months agoAllow extending memberships using flexible payments
Sybren A. Stüvel [Thu, 8 Nov 2018 12:41:16 +0000 (13:41 +0100)]
Allow extending memberships using flexible payments

For this I added a 'price per month' functions to PlanVariation and
Membership Level, which is used to convert between time and money, for
the current feature of flexible payment as well as up/downgrading
membership levels.

22 months agoNo longer auto-generate an Order when creating a Subscription
Sybren A. Stüvel [Thu, 8 Nov 2018 09:49:02 +0000 (10:49 +0100)]
No longer auto-generate an Order when creating a Subscription

Database objects should be created for a purpose (f.e. automatic renewal
happening, or the user paying for their membership) rather than as as side-
effect of another database object being created.

22 months agoTest money unit tests with MyPy as well
Sybren A. Stüvel [Thu, 8 Nov 2018 12:40:07 +0000 (13:40 +0100)]
Test money unit tests with MyPy as well

Annotating the test functions with `-> None` triggers MyPy to test those
functions as well. Since the Money class is very important to get right,
I thought this would be a good idea.

22 months agoMoney: added floor division operator
Sybren A. Stüvel [Thu, 8 Nov 2018 12:39:04 +0000 (13:39 +0100)]
Money: added floor division operator

This allows us to losslessly divide a monetary amount. This means that it
guarantees that when you do

    result = money // 3

this will hold:

    result * 3 <= money

We will use this in the future to compute the price of a Membership per
day, so that we can convert between time and money. The fact that this
computation will be off by a cent or so doesn't really matter.

22 months agoMake PyCharm happy
Sybren A. Stüvel [Thu, 8 Nov 2018 09:49:08 +0000 (10:49 +0100)]
Make PyCharm happy

22 months agoShow user when next automatic payment will happen.
Sybren A. Stüvel [Thu, 8 Nov 2018 09:06:05 +0000 (10:06 +0100)]
Show user when next automatic payment will happen.

22 months agoAdmin: allow filtering on managed memberships
Sybren A. Stüvel [Thu, 8 Nov 2018 08:24:33 +0000 (09:24 +0100)]
Admin: allow filtering on managed memberships

22 months agoPrevent toggling subscriptions between managed / non-managed in the admin
Sybren A. Stüvel [Thu, 8 Nov 2018 08:09:26 +0000 (09:09 +0100)]
Prevent toggling subscriptions between managed / non-managed in the admin

22 months agoUpgraded blender-id-oauth-client 0.7 → 0.8
Sybren A. Stüvel [Wed, 7 Nov 2018 15:44:26 +0000 (16:44 +0100)]
Upgraded blender-id-oauth-client 0.7 → 0.8

This fixes some potential issues with OAuth state getting out of sync.

22 months agoPrevent order generation for managed subscriptions
Sybren A. Stüvel [Wed, 7 Nov 2018 15:41:30 +0000 (16:41 +0100)]
Prevent order generation for managed subscriptions

This should make the database a bit cleaner, as those auto-created orders
for managed subscriptions will never be paid anyway.

22 months agoAlter 'Add Membership' in admin to easily create managed memberships
Sybren A. Stüvel [Tue, 23 Oct 2018 08:51:19 +0000 (10:51 +0200)]
Alter 'Add Membership' in admin to easily create managed memberships

22 months agogitignore the entire templates directory, not just '*.html' in there
Sybren A. Stüvel [Wed, 7 Nov 2018 13:37:37 +0000 (14:37 +0100)]
gitignore the entire templates directory, not just '*.html' in there

22 months agoAdmin: remove display of tax
Sybren A. Stüvel [Tue, 6 Nov 2018 09:42:47 +0000 (10:42 +0100)]
Admin: remove display of tax

We don't need those fields at the moment, so to reduce clutter it's better
to hide them.

22 months agoPrevent error in admin when order has no transactions
Sybren A. Stüvel [Tue, 6 Nov 2018 09:42:09 +0000 (10:42 +0100)]
Prevent error in admin when order has no transactions

22 months agoNotify manager (read: Ton) when a managed subscription passes its next_payment
Sybren A. Stüvel [Tue, 6 Nov 2018 09:37:40 +0000 (10:37 +0100)]
Notify manager (read: Ton) when a managed subscription passes its next_payment

22 months agoFixed bug in clock when subscription has no membership attached
Sybren A. Stüvel [Tue, 6 Nov 2018 09:38:09 +0000 (10:38 +0100)]
Fixed bug in clock when subscription has no membership attached

This should never happen in production, but it helps when trying out crazy
stuff while developing.

22 months agoRemoved the 'Add Payment Method' flow
Sybren A. Stüvel [Fri, 2 Nov 2018 11:05:11 +0000 (12:05 +0100)]
Removed the 'Add Payment Method' flow

It's possible to add payment methods by replacing an old one or by placing
a new order, and those flows are more explicit and easier to understand.
Furthermore, those are all done within the context of a certain currency,
which allows us to accept the correct payment method types.

22 months agoAllow users to replace a payment method
Sybren A. Stüvel [Fri, 2 Nov 2018 10:56:16 +0000 (11:56 +0100)]
Allow users to replace a payment method

Any subscription or order that's still payable and is using the old payment
method is changed to use the new payment method.

Also moved the PaymentMethodChangeTest from to

22 months agoRenamed template
Sybren A. Stüvel [Thu, 1 Nov 2018 17:04:36 +0000 (18:04 +0100)]
Renamed template

22 months agoLooper: Allow changing payment method for a subscription
Sybren A. Stüvel [Thu, 1 Nov 2018 15:47:21 +0000 (16:47 +0100)]
Looper: Allow changing payment method for a subscription

22 months agoReceipts: Don't show 'braintree' in front of used payment method
Sybren A. Stüvel [Thu, 1 Nov 2018 15:24:40 +0000 (16:24 +0100)]
Receipts: Don't show 'braintree' in front of used payment method

22 months agoRemoved unused imports
Sybren A. Stüvel [Thu, 1 Nov 2018 15:24:06 +0000 (16:24 +0100)]
Removed unused imports

22 months agoAdmin: added link to users' subscriptions
Sybren A. Stüvel [Thu, 1 Nov 2018 11:36:23 +0000 (12:36 +0100)]
Admin: added link to users' subscriptions

22 months agoAdmin: unified which fields of the user are used for searching
Sybren A. Stüvel [Thu, 1 Nov 2018 11:30:57 +0000 (12:30 +0100)]
Admin: unified which fields of the user are used for searching

22 months agoPrevent duplicate subscription + order when payment fails
Sybren A. Stüvel [Thu, 1 Nov 2018 11:09:52 +0000 (12:09 +0100)]
Prevent duplicate subscription + order when payment fails

While the user keeps trying and reusing the same form, it'll automatically
reuse the created subscription & order.

Restarting this flow is more tricky from a Looper point of view. Probably
it's better to detect that there is already a membership + unpaid order,
and go to the 'pay existing order' flow.

22 months agoAdded in the top-level directory + moved 'deploy' to 'staging'
Sybren A. Stüvel [Thu, 1 Nov 2018 09:48:54 +0000 (10:48 +0100)]
Added in the top-level directory + moved 'deploy' to 'staging'

This makes it easier to deploy, because:

- We have a top-level script, and
- If you want to run `docker/` we no longer have a `deploy`
  directory that prevents you from tab-completing the script in one go.

22 months agoLink to order and transaction in admin history
Sybren A. Stüvel [Thu, 1 Nov 2018 09:39:03 +0000 (10:39 +0100)]
Link to order and transaction in admin history

This may backfire a bit, because it required me to mark the message as
'HTML Safe' in the template. Since it wasn't before, we have a risk of
strange things happening with admin-generated log entries. However, it does
allow for adding links there, which makes 'X happened for transaction X
for order Y' a lot more pleasant to navigate.

22 months agoStricter check on assignments to money fields
Sybren A. Stüvel [Tue, 30 Oct 2018 18:41:58 +0000 (19:41 +0100)]
Stricter check on assignments to money fields

22 months agoCopy log entries on transactions to order, and order to subscription
Sybren A. Stüvel [Tue, 30 Oct 2018 18:39:24 +0000 (19:39 +0100)]
Copy log entries on transactions to order, and order to subscription

22 months agoMoneyField: Prevent unnecessary 'xxx changed' log entries
Sybren A. Stüvel [Tue, 30 Oct 2018 18:37:38 +0000 (19:37 +0100)]
MoneyField: Prevent unnecessary 'xxx changed' log entries

We needed better comparison between the various representations of money
we're using.

22 months agoAdmin: prevent adding payment methods
Sybren A. Stüvel [Tue, 30 Oct 2018 17:33:36 +0000 (18:33 +0100)]
Admin: prevent adding payment methods

22 months agoAdmin: Cleanup of inline payment method list
Sybren A. Stüvel [Tue, 30 Oct 2018 17:32:14 +0000 (18:32 +0100)]
Admin: Cleanup of inline payment method list

22 months agoFix deleting payment methods
Sybren A. Stüvel [Tue, 30 Oct 2018 16:55:07 +0000 (17:55 +0100)]
Fix deleting payment methods

22 months agoCreate Braintree client auth token for specific merchant account ID
Sybren A. Stüvel [Tue, 30 Oct 2018 16:54:29 +0000 (17:54 +0100)]
Create Braintree client auth token for specific merchant account ID

This should disallow AMEX cards when paying in USD (given that we don't
have support for that currently).

22 months agoAllow choosing currency when checking out
Sybren A. Stüvel [Tue, 30 Oct 2018 16:35:58 +0000 (17:35 +0100)]
Allow choosing currency when checking out