Commit graph

365 commits

Author SHA1 Message Date
Christopher Neugebauer
63fe8196e2 Adds SpeakerCondition, SpeakerDiscount, and SpeakerFlag 2016-09-04 12:36:20 +10:00
Christopher Neugebauer
1333fcdea1 Refactors flags and discount classes to be DRYer. 2016-09-04 12:18:10 +10:00
Christopher Neugebauer
43649002cb Makes ProductCondition work if you have both valid and cancelled instances of a product. Fixes #68 2016-09-03 16:18:27 +10:00
Christopher Neugebauer
8e1f799513 Test case for issue #68 2016-09-03 16:11:28 +10:00
Christopher Neugebauer
5703221fba Adds voucher form to registration amendment 2016-09-03 15:53:54 +10:00
Christopher Neugebauer
b9ee438b89 Registration amendments are now limited the products that the user is allowed to add. 2016-09-03 15:43:04 +10:00
Christopher Neugebauer
1152e185d1 Staff can now check out an invoice for a user 2016-09-03 15:16:46 +10:00
Christopher Neugebauer
c2065dd4b9 The form can now amend a user’s registration. 2016-09-03 15:08:44 +10:00
Christopher Neugebauer
84c40a1e1f Refactors ItemController, add items_released 2016-09-03 15:08:25 +10:00
Christopher Neugebauer
83b8b62d74 Attendee view now uses user_id, like the rest of the app 2016-09-03 14:24:58 +10:00
Christopher Neugebauer
897915f121 Adds the amend_registration view, which currently can display all of the products that the user has added to their current cart, and not much else. 2016-09-03 14:22:32 +10:00
Christopher Neugebauer
f3a08a82bb Shows the attendee’s name in the attendee list. 2016-09-03 12:45:21 +10:00
Christopher Neugebauer
4dbe69574c Adds report that tracks the free money in the system
Fixes #52
2016-09-03 12:17:39 +10:00
Christopher Neugebauer
96e691c5dd Tidies up reporting URLs 2016-09-03 12:16:52 +10:00
Christopher Neugebauer
da42bb2bac Shows all the payments an attendee has made.
Fixes #66
2016-09-03 11:51:12 +10:00
Christopher Neugebauer
1e6c90163d Fixes #64 2016-09-03 11:46:24 +10:00
Christopher Neugebauer
cdc6e229dc Etc (squash. srsly) 2016-09-03 11:31:39 +10:00
Christopher Neugebauer
0329ee7bb2 Amends test to test *both* paths for validating invoices. 2016-09-03 11:11:44 +10:00
Christopher Neugebauer
5a7819b0d7 Test for issue 64 2016-09-03 11:07:46 +10:00
Christopher Neugebauer
e7556b02b7 Fixes a minor oops 2016-09-02 16:14:58 +10:00
Christopher Neugebauer
5b03ae8ff6 Fixes credit note bug 2016-09-02 16:03:29 +10:00
Christopher Neugebauer
964fe380da Attendee manifest page now reports the items a user has pending and purchased. 2016-09-02 15:57:44 +10:00
Christopher Neugebauer
68aa9b067b Factors items_pending and items_purchased into ItemController 2016-09-02 15:57:20 +10:00
Christopher Neugebauer
17fc874212 Attendee manifest now displays credit notes. 2016-09-02 15:43:01 +10:00
Christopher Neugebauer
d58b2811f9 Makes the attendee list work better. 2016-09-02 15:37:57 +10:00
Christopher Neugebauer
e27e322c41 Adds the attendee list and stubs the attendee manifest reports 2016-09-02 15:15:15 +10:00
Christopher Neugebauer
48a036204d Reporting framework can now display multiple sections. 2016-09-02 15:14:54 +10:00
Christopher Neugebauer
25608b1653 Moves reports forms into reporting sub package 2016-09-02 14:33:23 +10:00
Christopher Neugebauer
64ca477cb8 Fixes flake8 snafus 2016-09-02 11:43:27 +10:00
Christopher Neugebauer
aacdab7d16 The reporting module now passes flake8 2016-09-02 11:25:50 +10:00
Christopher Neugebauer
4664c4711a Moves staff_views to reporting/views 2016-09-02 11:20:03 +10:00
Christopher Neugebauer
f9e26a2e49 Adds the link_view concept to reports; adds a link_view to credit notes report 2016-09-02 11:05:38 +10:00
Christopher Neugebauer
372512c6af Adds report to view credit notes. 2016-09-02 10:40:28 +10:00
Christopher Neugebauer
499c4209cf Makes form_type *properly* optional 2016-09-02 10:30:12 +10:00
Christopher Neugebauer
f1c8e90b77 Makes the form type optional for reports 2016-09-02 10:28:24 +10:00
Christopher Neugebauer
960de87343 oops 2016-09-02 10:10:21 +10:00
Christopher Neugebauer
86d1ab7160 Refactors core reporting bits into a reporting package 2016-09-02 10:08:11 +10:00
Christopher Neugebauer
fb022bbc7b Adds a view that shows all reports 2016-09-02 09:55:29 +10:00
Christopher Neugebauer
1e066952e9 Reports now need staff credentials to load. 2016-09-02 09:31:12 +10:00
Christopher Neugebauer
66226663d5 Makes the inventory report even clearer. 2016-08-26 15:53:33 +10:00
Christopher Neugebauer
32b887fed3 Makes the reporting framework a bit more DRY. 2016-08-26 15:11:08 +10:00
Christopher Neugebauer
3607fb19b8 Adds inventory report 2016-08-26 14:59:54 +10:00
Christopher Neugebauer
2a850c49bc Fixes some documentation snafus 2016-08-26 14:17:53 +10:00
Christopher Neugebauer
5c41a3576c re-structures the URLs a bit, puts the items sold report under reports/items_sold 2016-08-26 13:53:40 +10:00
Christopher Neugebauer
db8f428ee1 Makes the sales report keep a total. 2016-08-26 13:40:49 +10:00
Christopher Neugebauer
b7650ca772 Reports now display titles 2016-08-25 21:10:14 +10:00
Christopher Neugebauer
a320f822fc Report for total items sold. 2016-08-25 21:05:02 +10:00
Christopher Neugebauer
d131b547f6 Delete errant prints 2016-08-25 21:01:32 +10:00
Christopher Neugebauer
00476498a8 Very first attempt at a staff-facing report (items sold) 2016-08-25 20:33:19 +10:00
Christopher Neugebauer
3225a353e0 Migrates to the less-deprecated URL syntax 2016-08-25 19:51:36 +10:00
Christopher Neugebauer
0b7396c40f Discount line items now describe the product that the discount applies to. 2016-08-24 11:46:15 +10:00
Christopher Neugebauer
482fe22d89 Better reporting of errors in long-and-thin categories 2016-08-22 15:03:08 +10:00
Christopher Neugebauer
d52fc6eb9d Adds a formset for dealing with long-and-thin product categories. 2016-08-22 15:00:45 +10:00
Christopher Neugebauer
02e415c104 Adds an implementation for item-quantity forms. 2016-08-22 15:00:38 +10:00
Christopher Neugebauer
d9f9af9827 Modifies the Category model to allow for ITEM_QUANTITY forms 2016-08-22 15:00:38 +10:00
Christopher Neugebauer
c4274817a8 Moves ProductsForm to the top of its file 2016-08-22 10:15:01 +10:00
Christopher Neugebauer
8c34c7498a Factors _ProductsForm into _HasProductsFields 2016-08-22 10:13:02 +10:00
Christopher Neugebauer
4f16e4b9d0 Oops. 2016-08-21 18:28:16 +10:00
Christopher Neugebauer
7bf372f92a Invoices now send e-mails when created, paid, or refunded. 2016-08-21 17:14:19 +10:00
Christopher Neugebauer
924906d38c Adds test for e-mails being sent when invoices are generated. 2016-08-21 16:56:15 +10:00
Christopher Neugebauer
e946af0f04 Adds functions for mailing invoices when certain events occur. 2016-08-21 16:56:05 +10:00
Christopher Neugebauer
155f6d42d9 Renames patch_datetime to patches, adds e-mail patching bits 2016-08-21 16:39:57 +10:00
Christopher Neugebauer
1faa608425 Adds email framework shamelessly stolen from Symposion 2016-08-21 15:40:05 +10:00
Christopher Neugebauer
de83015776 Fixes ordering error in error display 2016-05-02 10:55:29 +10:00
Christopher Neugebauer
abe8c12b05 Simplifies flag and discount filter functions 2016-05-01 19:12:40 +10:00
Christopher Neugebauer
b9b50c6846 Bug fixes and query optimisations in flag.py and discount.py 2016-05-01 14:56:51 +10:00
Christopher Neugebauer
9ca25e5986 Makes sure that the cache is not disturbed by calling end_batch 2016-05-01 14:56:51 +10:00
Christopher Neugebauer
3ab5ac32ca Part of CartController->BatchController memoisation 2016-05-01 14:56:51 +10:00
Christopher Neugebauer
efb73e7a68 Memoises everything else that needs to be memoised. 2016-05-01 14:56:51 +10:00
Christopher Neugebauer
3d635521eb CartController now uses BatchController memoisation 2016-05-01 14:56:51 +10:00
Christopher Neugebauer
3717adb262 Squash this and last two 2016-05-01 14:56:46 +10:00
Christopher Neugebauer
ad2de6e9d4 Breaks cart batching tests into multiple tests 2016-05-01 14:56:46 +10:00
Christopher Neugebauer
94ceaa3bb1 Adds test case for CartController batching 2016-05-01 14:56:46 +10:00
Christopher Neugebauer
5929c0af3c Adds end_batch functionality 2016-05-01 14:56:45 +10:00
Christopher Neugebauer
3db1256895 Adds test for end_batch functionality 2016-05-01 14:56:45 +10:00
Christopher Neugebauer
a267b60eb9 Makes memoise work properly 2016-05-01 14:56:45 +10:00
Christopher Neugebauer
27ab44ec44 test cases for memoisation 2016-05-01 10:47:15 +10:00
Christopher Neugebauer
ddedf54c42 Adds batch context manager behaviour 2016-05-01 10:47:06 +10:00
Christopher Neugebauer
eb29e7cd09 Adds test cases for basic batch cacheing behaviour 2016-05-01 10:47:06 +10:00
Christopher Neugebauer
78a41970ea Adds design for BatchController 2016-05-01 10:47:06 +10:00
Christopher Neugebauer
162a1f23dd _filtered_discounts is now called _filtered_clauses, and it no longer cares about specific products or categories 2016-05-01 09:43:32 +10:00
Christopher Neugebauer
b3491cab8e _filtered_flags now no longer cares about products for filtering. It just does everything. 2016-04-30 20:42:41 +10:00
Christopher Neugebauer
c6fdfa496e Replaces CategoryController.attach_user_remainders with user_remainders 2016-04-30 20:30:44 +10:00
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