Coverage for website/pizzas/payables.py: 75.00%
32 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.template.defaultfilters import date
2from django.utils.functional import classproperty
4from payments.payables import Payable, payables
5from pizzas.models import FoodOrder
6from pizzas.services import can_change_order
9class FoodOrderPayable(Payable[FoodOrder]):
10 @property
11 def payment_amount(self):
12 return self.model.product.price
14 @property
15 def payment_topic(self):
16 start_date = date(self.model.food_event.start, "Y-m-d")
17 return f"Food {self.model.food_event.event.title} [{start_date}]"
19 @property
20 def payment_notes(self):
21 return (
22 f"Food order by {self.model.member_name} "
23 f"for {self.model.food_event.event.title}"
24 )
26 @property
27 def payment_payer(self):
28 return self.model.member
30 def can_manage_payment(self, member):
31 return can_change_order(member, self.model.food_event)
33 @property
34 def tpay_allowed(self):
35 return self.model.food_event.tpay_allowed
37 @classproperty
38 def immutable_after_payment(self):
39 return True
41 @classproperty
42 def immutable_model_fields_after_payment(self):
43 return ["product", "food_event", "name", "member"]
46def register():
47 payables.register(FoodOrder, FoodOrderPayable)