Commit graph

232 commits

Author SHA1 Message Date
Christopher Neugebauer
941caa30d9 Replaces ProductController.attach_user_remainders with ProductController.user_remainders 2016-04-30 20:30:21 +10:00
Christopher Neugebauer
b40505117f Fixes flake8 errors arising from rebase 2016-04-29 11:22:56 +10:00
Christopher Neugebauer
135f2fb47b Refactors discounts validation in terms of available_discounts 2016-04-29 11:16:40 +10:00
Christopher Neugebauer
4eff8194f9 Reduces CartController re-loading when batching operations 2016-04-29 11:16:40 +10:00
Christopher Neugebauer
02fe88a4e4 Tests and fixes for a bug where discount quantities did not respect per-line item quantities. 2016-04-29 11:11:59 +10:00
Christopher Neugebauer
6d52a4c18f More low-hanging query optimisations 2016-04-29 11:11:26 +10:00
Christopher Neugebauer
4fb569d935 Does more select_related and bulk_create calls 2016-04-29 11:10:20 +10:00
Christopher Neugebauer
fd5cf50fab Makes items_purchased do more database work 2016-04-29 11:09:36 +10:00
Christopher Neugebauer
a79ad3520e Puts attach_remainders on ProductController and CategoryController, eliminating the need to query each product and category separately. 2016-04-29 11:09:34 +10:00
Christopher Neugebauer
3b5b958b78 Makes the discounts section from _handle_products evaluate lazily, just in case it’s never displayed in a template (those are some very very expensive queries there). 2016-04-29 11:09:08 +10:00
Christopher Neugebauer
76e6206d09 Wraps the guided registration handler in views.py in a batch marker 2016-04-29 11:08:45 +10:00
Christopher Neugebauer
587e6e20b2 Adds an operations_batch context manager that allows batches of modifying operations to be nested. Closes #44. 2016-04-29 11:08:45 +10:00
Christopher Neugebauer
162db24817 Flake8 fixes 2016-04-29 11:08:45 +10:00
Christopher Neugebauer
71de0df5dc Makes DiscountController a class and puts available_discounts inside it 2016-04-29 11:08:42 +10:00
Christopher Neugebauer
145fd057ac Breaks out flag-handling code into flag.py and FlagController 2016-04-29 11:07:52 +10:00
Christopher Neugebauer
3f1be0e14e Rearchitected condition processing such that multiple conditions are processed by the database, in bulk. Closes #42. 2016-04-29 11:06:58 +10:00
Christopher Neugebauer
05269c93cd Marks 0.2.0-dev 2016-04-27 11:36:31 +10:00
Christopher Neugebauer
b32c7780c6 Marks 0.1.0 release 2016-04-26 14:51:12 +10:00
Christopher Neugebauer
8afb31a118 Flake8 fix 2016-04-26 13:56:10 +10:00
Christopher Neugebauer
63d15a6be3 More view documentation 2016-04-26 10:52:56 +10:00
Christopher Neugebauer
7ccfaed304 Removes line that forces segfault avoidance 2016-04-25 18:50:09 +10:00
Christopher Neugebauer
cbecbf9a41 Tidies up some docs 2016-04-25 18:50:09 +10:00
Christopher Neugebauer
fd751b4ea1 Removes print statement 2016-04-25 18:32:36 +10:00
Christopher Neugebauer
f755b13091 Removes EnablingConditionBase, replaces it with FlagBase; adds first tranche of migrations 2016-04-25 18:32:11 +10:00
Christopher Neugebauer
f376bba7fd Removes all migrations 2016-04-25 18:30:31 +10:00
Christopher Neugebauer
4cdbdb71ce flake8 fixes 2016-04-25 17:37:33 +10:00
Christopher Neugebauer
a2fa1d6548 Fixes a bunch of variable errors, and adds user_passes_test 2016-04-25 17:33:16 +10:00
Christopher Neugebauer
b709da97f1 Checks that required category constraints are met before letting you check out your cart.
Closes #35
2016-04-25 17:13:58 +10:00
Christopher Neugebauer
a69d3f051e Makes cart amendment methods fail if the cart is no longer active.
Closes #16
2016-04-25 17:13:11 +10:00
Christopher Neugebauer
e2687cfa6f Stops testing using ManualPayment, and just uses PaymentBase instead 2016-04-25 16:45:42 +10:00
Christopher Neugebauer
2afa6a8d79 Adds “NO SELECTION” to radio buttons form.
Closes #32.
2016-04-25 16:16:41 +10:00
Christopher Neugebauer
00f87e30b7 Adds an upper limit on quantity boxes (it’s set to 500 for the moment though).
Closes #19.
2016-04-25 16:16:22 +10:00
Christopher Neugebauer
42912519f1 Adds entered_by to manual payments. Closes #22. 2016-04-25 16:06:29 +10:00
Christopher Neugebauer
bf053242de Closes #25 — changes what invoice_access will redirect to 2016-04-25 16:00:33 +10:00
Christopher Neugebauer
397ba207bb Adds utility to defeat segfaults in tests. Hopefully you won’t need it. 2016-04-25 15:36:55 +10:00
Christopher Neugebauer
63dfd353c1 Replaces active/released flags in Cart with a single int flag. Closes #41 2016-04-25 15:36:55 +10:00
Christopher Neugebauer
c0b0ae780d Removes confusingness from cart.py 2016-04-25 13:20:48 +10:00
Christopher Neugebauer
9d25725514 Documents the template tags 2016-04-25 13:15:06 +10:00
Christopher Neugebauer
1b9f76823f Etc 2016-04-25 12:59:43 +10:00
Christopher Neugebauer
4373b7260d Finishes the public views documentation 2016-04-25 12:53:01 +10:00
Christopher Neugebauer
2d8602a6da views documentation 2016-04-25 11:14:17 +10:00
Christopher Neugebauer
eefec32cb0 Makes private helper functions private 2016-04-25 10:19:20 +10:00
Christopher Neugebauer
9c289acadd Starts documenting the public views. 2016-04-25 10:15:13 +10:00
Christopher Neugebauer
32ffa25895 Adds util.all_arguments_optional 2016-04-25 09:57:36 +10:00
Christopher Neugebauer
b0d1f69f1a Writes the integration guide 2016-04-25 09:49:19 +10:00
Christopher Neugebauer
12e04c248f Credit notes are now generated when invoices are overpaid, or invoices are paid into void or refunded invoices. Closes #37. 2016-04-25 08:26:54 +10:00
Christopher Neugebauer
9a4574ef2c DRYs up test_invoice a bit 2016-04-25 08:25:19 +10:00
Christopher Neugebauer
9f72b67510 Uses for_id_or_404 in views.py 2016-04-25 07:20:41 +10:00
Christopher Neugebauer
ca8f67c2f3 Adds for_id, which lets you get an InvoiceController or CreditNoteController by the ID of the invoice/credit note/. Closes #38. 2016-04-25 07:20:41 +10:00
Christopher Neugebauer
3b3744578e First pass at the payments documentation. 2016-04-24 21:42:20 +10:00
Christopher Neugebauer
e9ebf5da03 Writes inventory and overview documentation, and updates docstrings on a LOT of modules. 2016-04-22 16:08:18 +10:00
Christopher Neugebauer
875f736d67 Consolidates models.py into a directory module. 2016-04-22 15:06:24 +10:00
Christopher Neugebauer
ffa1ca6783 Fixes flags admin 2016-04-12 11:43:38 +10:00
Christopher Neugebauer
87e6fa064a Merge branch 'master' into admin_models_cleanup 2016-04-12 11:39:54 +10:00
Christopher Neugebauer
d3f7431f7d Squashes migrations from rename_to_flags branch; marks as normal migration 2016-04-12 08:47:17 +10:00
Christopher Neugebauer
c24b9ee213 Makes EnablingConditionBase a minimal reification of an abstract base model FlagBase, replaces enablingconditionbase with flagbase where possible, and fixes method names and documentation 2016-04-12 08:42:22 +10:00
Christopher Neugebauer
638ec26126 Replaces the mandatory/non-mandatory concept with the enabled_if_true/disabled_if_false concept. Closes #4. 2016-04-11 20:48:18 +10:00
Christopher Neugebauer
61dbe60cfa Renames the admin-visible names for many model classes, and adds a default ordering where they’re useful too. 2016-04-11 19:23:38 +10:00
Christopher Neugebauer
c4c8a7ab82 Tidies up the admin interface for flags 2016-04-11 18:12:37 +10:00
Christopher Neugebauer
e88a287fef renames test_enabling_condition to test_flag 2016-04-11 17:59:20 +10:00
Christopher Neugebauer
7b476fd5cb s/enabling_condition/flag 2016-04-11 17:56:11 +10:00
Christopher Neugebauer
4fedc73304 Renames EnablingCondition to Flag where possible 2016-04-11 17:55:00 +10:00
Christopher Neugebauer
7e8d044a9f Adds the ability to apply or refund a credit note. 2016-04-11 13:11:57 +10:00
Christopher Neugebauer
680ce689f6 Adds initial credit note display view 2016-04-11 13:11:57 +10:00
Christopher Neugebauer
2c94e7538a Adds available_credit tag, and adds a view for refunding an invoice to generate a credit note. 2016-04-11 13:11:56 +10:00
Christopher Neugebauer
6b10a0a7e4 Adds CreditNote, CreditNoteController, related models, and tests. 2016-04-11 13:11:56 +10:00
Christopher Neugebauer
ae8f39381f Flake8 fixes 2016-04-08 19:49:18 +10:00
Christopher Neugebauer
97438624e1 Makes the guided registration stay on the front page if an incorrect voucher is added but a valid profile is filled out. Resolves #9 2016-04-08 19:43:34 +10:00
Christopher Neugebauer
01b9adbaf4 Re-writes the guided registration to individually track completed categories, and keep the form page the same until every category is finished. Resolves #14 2016-04-08 19:43:34 +10:00
Christopher Neugebauer
ea1d6f52e6 Adds payment access codes. 2016-04-08 13:20:35 +10:00
Christopher Neugebauer
3dab78ab25 Adds the access_code field to Attendee model 2016-04-08 13:20:35 +10:00
Christopher Neugebauer
94a42c100b Adds manual payment functionality 2016-04-07 19:19:19 +10:00
Christopher Neugebauer
2fbe789090 Adds validate_allowed_to_pay(), which validates whether you’re allowed to pay for an invoice 2016-04-07 18:26:31 +10:00
Christopher Neugebauer
0e80e0336c adds invoice_recipient to AttendeeProfileBase 2016-04-07 17:17:15 +10:00
Christopher Neugebauer
38cdb8aa63 Makes invoice model, controller, and test changes to match issue #15 design doc 2016-04-07 17:16:56 +10:00
Christopher Neugebauer
5633554854 Tests now use TestingInvoiceController 2016-04-07 17:16:21 +10:00
Christopher Neugebauer
ac10ea4ee8 s/cart_controller_helper/controller_helpers/ 2016-04-07 17:16:04 +10:00
Christopher Neugebauer
8e95bb7469 flake8 fixes 2016-04-07 13:26:25 +10:00
Christopher Neugebauer
0b7ccfc827 Enforces minimum quantity of 0 for quantity boxes 2016-04-06 22:59:00 +10:00
Christopher Neugebauer
dba3773636 Adds db indices 2016-04-06 22:59:00 +10:00
Christopher Neugebauer
53413388e0 Optimises queries through simplifying repeated queries and select_related use 2016-04-06 22:59:00 +10:00
Christopher Neugebauer
2f77f5bb23 Replaces .active = False; .save() pattern in tests with a test controller method 2016-04-06 17:24:25 +10:00
Christopher Neugebauer
8ad265a65a Fixes tests now that $0 invoices pay themselves 2016-04-06 17:19:09 +10:00
Christopher Neugebauer
c9a62db774 Resolves #17 - cannot generate invoice if there are no product items 2016-04-06 17:02:11 +10:00
Christopher Neugebauer
812cc0b9c8 Resolves #6 — Help text for items without a description is much much nicer 2016-04-06 16:45:54 +10:00
Christopher Neugebauer
4021aa3c8e Resolves #12 — each item category shows what items you have already purchased in each category 2016-04-06 16:33:04 +10:00
Christopher Neugebauer
cc318dfa9b Fixes tests 2016-04-06 16:09:57 +10:00
Christopher Neugebauer
40bc5985f4 Propagates the error messages up from enabling condition testing 2016-04-06 15:47:09 +10:00
Christopher Neugebauer
0340b6da20 Adds “fix_errors” query to “checkout”, which allows users to have issues fix 2016-04-06 15:46:58 +10:00
Christopher Neugebauer
39b130811c Removes superfluous test 2016-04-06 15:46:49 +10:00
Christopher Neugebauer
c8c16072ba fix_simple_errors() now removes exhausted vouchers from the voucher set. 2016-04-06 14:02:23 +10:00
Christopher Neugebauer
0d57da8d6f Makes apply_voucher() idempotent, adds _test_voucher to validate_cart, and updates tests. 2016-04-06 14:02:22 +10:00
Christopher Neugebauer
8d07518a9b Fixes an incorrect voucher test 2016-04-06 14:02:22 +10:00
Christopher Neugebauer
6f28c20b70 Factors _test_voucher() method into CartController 2016-04-06 14:02:22 +10:00
Christopher Neugebauer
7d97d2d2de Adds fix_simple_errors to cart - it zeroes out unavailable products. Adds test that it does that. 2016-04-06 14:02:22 +10:00
Christopher Neugebauer
f5d9458d1a Adds a validation based on available_products to validate_cart, and a test based on simple enabling conditions 2016-04-06 10:22:44 +10:00
Christopher Neugebauer
a4d684f444 Raises limits errors in the right parts of the form 2016-04-03 15:25:39 +10:00
Christopher Neugebauer
7609965883 flake8 compliance 2016-04-03 13:21:57 +10:00
Christopher Neugebauer
4d134e95d7 Refactors discount ceiling testing to make sure that the discount ceiling only considers items where the discount was applied in determining if the discount was reached. 2016-04-03 13:16:35 +10:00
Christopher Neugebauer
eab1deff77 Removes set_quantity and add_to_cart from CartController, and factors it into a test controller for testing 2016-04-03 10:07:59 +10:00