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 |
|
Christopher Neugebauer
|
312fffd137
|
Adds negative quantity tests to _test_limits, and removes _set_quantity_old.
|
2016-04-03 10:07:59 +10:00 |
|
Christopher Neugebauer
|
6c9a68dc5b
|
Fixes #8 properly
|
2016-04-02 20:31:59 +11:00 |
|
Christopher Neugebauer
|
2cbda9172f
|
Fixes bug in product and category, and ceiling enabling conditions
|
2016-04-02 20:31:59 +11:00 |
|
Christopher Neugebauer
|
8796670328
|
handle_products now uses the transactional set_quantities.
|
2016-04-02 20:12:27 +11:00 |
|
Christopher Neugebauer
|
e3ec128147
|
Factors limits testing in set_quantities into _test_limits()
|
2016-04-02 20:12:27 +11:00 |
|
Christopher Neugebauer
|
194f98bcc4
|
Refactors available_products to use test_enabling_conditions
|
2016-04-02 18:18:06 +11:00 |
|
Christopher Neugebauer
|
1e7a2abc7f
|
Refactors testing of enabling conditions so that they are done in bulk in ConditionsController, rather than one product at a time.
|
2016-04-02 18:18:06 +11:00 |
|
Christopher Neugebauer
|
5716af0afa
|
Replaces a bunch of len(queryset) with queryset.count()
|
2016-04-02 18:17:18 +11:00 |
|
Christopher Neugebauer
|
1c6dc12781
|
Replaces user_can_add_within_limit with user_quantity_remaining
|
2016-04-02 18:17:18 +11:00 |
|
Christopher Neugebauer
|
576dddcaad
|
Adds user_quantity_remaining to CategoryController
|
2016-04-02 18:17:18 +11:00 |
|
Christopher Neugebauer
|
39021cd3dd
|
Adds set_quantities, refactors set_quantity in terms of set_quantities
|
2016-04-02 18:16:29 +11:00 |
|
Christopher Neugebauer
|
2e0144effe
|
flake8
|
2016-04-02 13:29:53 +11:00 |
|
Christopher Neugebauer
|
8f233c7943
|
available_products now refers to the user’s product limits as well as enabling conditions
|
2016-04-02 13:14:34 +11:00 |
|
Christopher Neugebauer
|
f7289c2101
|
Adds ‘available_categories’ as something that actually works
|
2016-04-02 11:56:03 +11:00 |
|
Christopher Neugebauer
|
bdd3714f47
|
flake8 style issue
|
2016-04-02 11:34:19 +11:00 |
|
Christopher Neugebauer
|
26af6e8672
|
Adds messages when items are updated; disables product forms when there are no products available.
|
2016-04-02 11:33:20 +11:00 |
|
Christopher Neugebauer
|
69a65ac3ed
|
Fixes tests on Django 1.9
|
2016-04-02 11:02:01 +11:00 |
|
Christopher Neugebauer
|
3a6b4125e9
|
Bugfix
|
2016-04-01 12:34:06 +01:00 |
|
Christopher Neugebauer
|
12e4d0a3cb
|
flake8
|
2016-04-01 12:14:39 +01:00 |
|
Christopher Neugebauer
|
89cba55807
|
Pre-fills the attendee name from a speaker profile, if there is one.
Resolves #8.
|
2016-04-01 21:39:54 +11:00 |
|
Christopher Neugebauer
|
be277c17d2
|
BadgeAndProfile is replaced with AttendeeProfileBase — consumer apps should subclass AttendeeProfileBase to make the registration process work :)
|
2016-04-01 21:21:09 +11:00 |
|
Christopher Neugebauer
|
660e8cb75f
|
Removes BadgeAndProfile.get_instance
|
2016-04-01 16:58:55 +11:00 |
|
Christopher Neugebauer
|
d2d2a1b0ec
|
Work for making invoices contain complete profile information
|
2016-04-01 16:54:40 +11:00 |
|
Christopher Neugebauer
|
aa6377f4ce
|
Adds multiply as a template filter (for invoices)
|
2016-04-01 16:54:40 +11:00 |
|
Christopher Neugebauer
|
8324b51094
|
Adds new guided registration process.
|
2016-04-01 16:54:40 +11:00 |
|
Christopher Neugebauer
|
466c664b68
|
factor out handle_profile
|
2016-04-01 16:54:07 +11:00 |
|
Christopher Neugebauer
|
8b79670608
|
Fixes issue #8
|
2016-03-31 19:15:04 +11:00 |
|
Christopher Neugebauer
|
5e0c87c435
|
Deletes templates — moved to registrasion-demo repo
|
2016-03-31 19:15:03 +11:00 |
|
Christopher Neugebauer
|
2d5caa3299
|
Renames edit_profile to attendee_edit
|
2016-03-31 19:15:03 +11:00 |
|
Christopher Neugebauer
|
e0e0d4bf3b
|
views.py renders from registrasion/
|
2016-03-31 19:15:03 +11:00 |
|
Christopher Neugebauer
|
62d5c5b2bf
|
Revert "Registrasion URLs now include django-nested-admin"
This reverts commit 58eed33c429c1035801e840b41aa7104c02b9b5a.
|
2016-03-31 19:14:43 +11:00 |
|
Christopher Neugebauer
|
9ec9e68ee6
|
Registrasion URLs now include django-nested-admin
|
2016-03-31 19:14:42 +11:00 |
|
Christopher Neugebauer
|
eebf9e81f5
|
Resolves #3 — start_time, end_time, and limit can now be blank. Tests already dealt with the null case.
|
2016-03-31 14:45:39 +11:00 |
|
Christopher Neugebauer
|
ba0682a5f9
|
Fleshes out the admin interface and adds help_text attributes to the model fields that need it
|
2016-03-31 14:38:48 +11:00 |
|
Christopher Neugebauer
|
cf85af7719
|
Adds refund function, adds tests, makes sure that refunds are obeyed elsewhere in the codebase
|
2016-03-27 21:04:10 +11:00 |
|
Christopher Neugebauer
|
b65223aaa1
|
Adds model for released carts
|
2016-03-27 19:13:05 +11:00 |
|
Christopher Neugebauer
|
3e4e52b165
|
Adds more constraints around payment and voiding of invoices
|
2016-03-27 14:41:43 +11:00 |
|
Christopher Neugebauer
|
8080d7851b
|
Invoices now automatically void themselves if their cart is out of date
|
2016-03-27 14:04:47 +11:00 |
|
Christopher Neugebauer
|
0d458bea06
|
Allows Product.limit_per_user to be blank and null. Adds Category.limit_per_user. Adds functionality and tests to verify that this is legal.
|
2016-03-27 13:12:33 +11:00 |
|
Christopher Neugebauer
|
7c99750f3a
|
Simplifies creation of test data in test_cart, adds an extra product category and two new products
|
2016-03-27 13:12:33 +11:00 |
|
Christopher Neugebauer
|
db332da958
|
flake8
|
2016-03-27 13:12:33 +11:00 |
|
Christopher Neugebauer
|
3562772c13
|
Adds RadioBoxProductsForm
|
2016-03-27 13:12:33 +11:00 |
|
Christopher Neugebauer
|
0ae005a5f5
|
Factors _QuantityBoxForm out of _ProductsForm
|
2016-03-27 11:30:11 +11:00 |
|
Christopher Neugebauer
|
834233cd72
|
Factors ProductsForm handling into its own function
|
2016-03-27 11:30:11 +11:00 |
|
Christopher Neugebauer
|
464684f13e
|
Refactors the product_category view to be much simpler
|
2016-03-26 20:21:54 +11:00 |
|
Christopher Neugebauer
|
b13e6f7ce2
|
Factors out voucher form handling into its own function
|
2016-03-26 20:01:46 +11:00 |
|
Christopher Neugebauer
|
2d5cd622c5
|
Makes it invalid for a user to re-enter a voucher code they already have.
|
2016-03-26 19:47:01 +11:00 |
|
Christopher Neugebauer
|
36ecf7fd54
|
Adds more tags for the dashboard.
|
2016-03-26 15:14:28 +11:00 |
|
Christopher Neugebauer
|
941b057865
|
Shows the available discounts on the registration form
|
2016-03-26 14:03:25 +11:00 |
|
Christopher Neugebauer
|
fc279b1922
|
Replaces CategoryForm with ProductsForm (makes the form slightly dumber)
|
2016-03-26 13:37:13 +11:00 |
|
Christopher Neugebauer
|
45aa83f854
|
Adds available_products as a method on ProductController
|
2016-03-26 13:37:13 +11:00 |
|
Christopher Neugebauer
|
c41a9cadff
|
recalculate_discounts now uses the available_discounts function from controllers.discount.
|
2016-03-26 13:33:23 +11:00 |
|
Christopher Neugebauer
|
fb3878ce2e
|
Adds available_discounts, which allows enumeration of the discounts that are available for a given set of products and categories
|
2016-03-25 18:59:34 +11:00 |
|
Christopher Neugebauer
|
8d66ed5715
|
Fix flake8 warnings
|
2016-03-25 14:51:39 +11:00 |
|
Christopher Neugebauer
|
c192fef491
|
Adds basic template tag for available categories. Currently does not check enabling conditions.
|
2016-03-25 14:16:30 +11:00 |
|
Christopher Neugebauer
|
478b328e41
|
Uses the completed_registration flag on the Attendee model
|
2016-03-25 12:50:59 +11:00 |
|
Christopher Neugebauer
|
8e6364d02a
|
Fixes bug where discount quantity applied to all users rather than specific user. Adds test case.
|
2016-03-25 12:50:34 +11:00 |
|
Christopher Neugebauer
|
83b11cd722
|
Fixes invoicing payment logic
|
2016-03-24 14:20:29 +11:00 |
|
Christopher Neugebauer
|
eff5686dcf
|
Adds logic for required categories
|
2016-03-24 14:19:33 +11:00 |
|
Christopher Neugebauer
|
dcad2d5f7c
|
Second pass at guided registration, including profile page
|
2016-03-24 13:43:06 +11:00 |
|
Christopher Neugebauer
|
05923a9a8f
|
Profile form view now edits the relevant form
|
2016-03-24 12:58:23 +11:00 |
|
Christopher Neugebauer
|
236c61eefa
|
Fleshes out badge model, and adds first pass at display of the badge form
|
2016-03-24 12:44:59 +11:00 |
|
Christopher Neugebauer
|
eb530bd485
|
Adds the first pass at a “guided” registration form
|
2016-03-23 19:39:07 +11:00 |
|
Christopher Neugebauer
|
d50d6bac48
|
Fixes voucher handling form to not be compulsory
|
2016-03-23 19:36:54 +11:00 |
|
Christopher Neugebauer
|
7086ea8729
|
Moves product disabling code into the form class
|
2016-03-23 19:36:22 +11:00 |
|
Christopher Neugebauer
|
e118a4e74c
|
Adds dumb process for paying invoices.
|
2016-03-23 15:04:51 +11:00 |
|
Christopher Neugebauer
|
4dc150d734
|
Fills in quantity boxes from the quantities in the current cart, not overall
|
2016-03-23 15:04:51 +11:00 |
|
Christopher Neugebauer
|
2d6b28c5a6
|
Adds mechanism for entering a voucher code
|
2016-03-23 15:04:51 +11:00 |
|
Christopher Neugebauer
|
cc42490832
|
Applying a voucher to a cart now uses the voucher code rather than the voucher object. Adds tests for constraints on vouchers.
|
2016-03-23 15:04:51 +11:00 |
|
Christopher Neugebauer
|
745f6db444
|
Adds “CategoryForm” to forms.py. It’s about to replace the existing ProductItem form
|
2016-03-23 15:04:51 +11:00 |
|
Christopher Neugebauer
|
68e7e4e594
|
Checks enabling conditions before adding items to the list
|
2016-03-04 18:33:03 -08:00 |
|
Christopher Neugebauer
|
8400da17da
|
Fixes error in EnablingConditionBase, adds admins for Product and Category enabling conditions
|
2016-03-04 18:33:03 -08:00 |
|
Christopher Neugebauer
|
0182a32f03
|
Fixes various errors in discount calculation, and adds tests for these
|
2016-03-04 18:32:52 -08:00 |
|
Christopher Neugebauer
|
99f4b8dfe0
|
Fixes validation error in models.py for adding discounts
|
2016-03-04 18:32:52 -08:00 |
|
Christopher Neugebauer
|
a4de15830c
|
Adds checkout view, which generates an invoice, and then redirects to the invoice itself.
|
2016-03-04 18:32:52 -08:00 |
|
Christopher Neugebauer
|
1b7d8a60c1
|
Adds product_category form, which allows users to add products from a specific category to their cart.
|
2016-03-04 14:07:03 -08:00 |
|
Christopher Neugebauer
|
c51be4d30a
|
Adds set_quantity as a method on CartController.
Refactors add_to_cart to be in terms of set_quantity
|
2016-03-04 14:07:02 -08:00 |
|
Christopher Neugebauer
|
c13a986f2d
|
Updates migration
|
2016-01-22 22:07:59 +11:00 |
|
Christopher Neugebauer
|
2e89bc4887
|
Adds validation code to make sure that only one discount condition is applicable per product
|
2016-01-22 21:53:30 +11:00 |
|
Christopher Neugebauer
|
224878a10c
|
Fixes flake8 errors
|
2016-01-22 17:21:29 +11:00 |
|