Replaces _generate with _generate_from_cart and _generate
This commit is contained in:
		
							parent
							
								
									613667aa30
								
							
						
					
					
						commit
						a9bc647570
					
				
					 1 changed files with 16 additions and 10 deletions
				
			
		|  | @ -44,7 +44,7 @@ class InvoiceController(ForId, object): | ||||||
|             cart_controller.validate_cart()  # Raises ValidationError on fail. |             cart_controller.validate_cart()  # Raises ValidationError on fail. | ||||||
| 
 | 
 | ||||||
|             cls.update_old_invoices(cart) |             cls.update_old_invoices(cart) | ||||||
|             invoice = cls._generate(cart) |             invoice = cls._generate_from_cart(cart) | ||||||
| 
 | 
 | ||||||
|         return cls(invoice) |         return cls(invoice) | ||||||
| 
 | 
 | ||||||
|  | @ -74,7 +74,7 @@ class InvoiceController(ForId, object): | ||||||
| 
 | 
 | ||||||
|     @classmethod |     @classmethod | ||||||
|     @transaction.atomic |     @transaction.atomic | ||||||
|     def _generate(cls, cart): |     def _generate_from_cart(cls, cart): | ||||||
|         ''' Generates an invoice for the given cart. ''' |         ''' Generates an invoice for the given cart. ''' | ||||||
| 
 | 
 | ||||||
|         cart.refresh_from_db() |         cart.refresh_from_db() | ||||||
|  | @ -86,14 +86,13 @@ class InvoiceController(ForId, object): | ||||||
|             "product", |             "product", | ||||||
|             "product__category", |             "product__category", | ||||||
|         ) |         ) | ||||||
| 
 |  | ||||||
|         if len(product_items) == 0: |  | ||||||
|             raise ValidationError("Your cart is empty.") |  | ||||||
| 
 |  | ||||||
|         product_items = product_items.order_by( |         product_items = product_items.order_by( | ||||||
|             "product__category__order", "product__order" |             "product__category__order", "product__order" | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|  |         if len(product_items) == 0: | ||||||
|  |             raise ValidationError("Your cart is empty.") | ||||||
|  | 
 | ||||||
|         discount_items = commerce.DiscountItem.objects.filter(cart=cart) |         discount_items = commerce.DiscountItem.objects.filter(cart=cart) | ||||||
|         discount_items = discount_items.select_related( |         discount_items = discount_items.select_related( | ||||||
|             "discount", |             "discount", | ||||||
|  | @ -101,8 +100,6 @@ class InvoiceController(ForId, object): | ||||||
|             "product__category", |             "product__category", | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|         line_items = [] |  | ||||||
| 
 |  | ||||||
|         def format_product(product): |         def format_product(product): | ||||||
|             return "%s - %s" % (product.category.name, product.name) |             return "%s - %s" % (product.category.name, product.name) | ||||||
| 
 | 
 | ||||||
|  | @ -110,6 +107,8 @@ class InvoiceController(ForId, object): | ||||||
|             description = discount.description |             description = discount.description | ||||||
|             return "%s (%s)" % (description, format_product(product)) |             return "%s (%s)" % (description, format_product(product)) | ||||||
| 
 | 
 | ||||||
|  |         line_items = [] | ||||||
|  | 
 | ||||||
|         for item in product_items: |         for item in product_items: | ||||||
|             product = item.product |             product = item.product | ||||||
|             line_item = commerce.LineItem( |             line_item = commerce.LineItem( | ||||||
|  | @ -131,10 +130,17 @@ class InvoiceController(ForId, object): | ||||||
|         # Generate the invoice |         # Generate the invoice | ||||||
| 
 | 
 | ||||||
|         user = cart.user |         user = cart.user | ||||||
|         reservation_limit = cart.reservation_duration + cart.time_last_updated |         min_due_time = cart.reservation_duration + cart.time_last_updated | ||||||
|  | 
 | ||||||
|  |         return cls._generate(cart.user, cart, min_due_time, line_items) | ||||||
|  | 
 | ||||||
|  |     @classmethod | ||||||
|  |     @transaction.atomic | ||||||
|  |     def _generate(cls, user, cart, min_due_time, line_items): | ||||||
|  | 
 | ||||||
|         # Never generate a due time that is before the issue time |         # Never generate a due time that is before the issue time | ||||||
|         issued = timezone.now() |         issued = timezone.now() | ||||||
|         due = max(issued, reservation_limit) |         due = max(issued, min_due_time) | ||||||
| 
 | 
 | ||||||
|         # Get the invoice recipient |         # Get the invoice recipient | ||||||
|         profile = people.AttendeeProfileBase.objects.get_subclass( |         profile = people.AttendeeProfileBase.objects.get_subclass( | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Christopher Neugebauer
						Christopher Neugebauer