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

1from django.template.defaultfilters import date 

2from django.utils.functional import classproperty 

3 

4from payments.payables import Payable, payables 

5from pizzas.models import FoodOrder 

6from pizzas.services import can_change_order 

7 

8 

9class FoodOrderPayable(Payable[FoodOrder]): 

10 @property 

11 def payment_amount(self): 

12 return self.model.product.price 

13 

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}]" 

18 

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 ) 

25 

26 @property 

27 def payment_payer(self): 

28 return self.model.member 

29 

30 def can_manage_payment(self, member): 

31 return can_change_order(member, self.model.food_event) 

32 

33 @property 

34 def tpay_allowed(self): 

35 return self.model.food_event.tpay_allowed 

36 

37 @classproperty 

38 def immutable_after_payment(self): 

39 return True 

40 

41 @classproperty 

42 def immutable_model_fields_after_payment(self): 

43 return ["product", "food_event", "name", "member"] 

44 

45 

46def register(): 

47 payables.register(FoodOrder, FoodOrderPayable)