| 
								
								
									 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 |  | 
				
					
						| 
								
								
									 Christopher Neugebauer | c2400c4695 | Moves the controller modules into their own subpackage. There's going to be a lot of stuff in there. | 2016-01-22 16:29:41 +11:00 |  | 
				
					
						| 
								
								
									 Christopher Neugebauer | d9e433659d | Imports code from old Symposion repo | 2016-01-22 16:19:11 +11:00 |  |