Coverage for website/events/payables.py: 91.89%
35 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 events.models import EventRegistration
5from events.services import is_organiser
6from payments.payables import Payable, payables
9class EventRegistrationPayable(Payable[EventRegistration]):
10 @property
11 def payment_amount(self):
12 return self.model.payment_amount
14 @property
15 def payment_topic(self):
16 return f'{self.model.event.title} [{date(self.model.event.start, "Y-m-d")}]'
18 @property
19 def payment_notes(self):
20 notes = f"Event registration {self.model.event.title}. "
21 notes += f"{date(self.model.event.start)}. Registration date: {date(self.model.date)}."
22 if self.model.special_price: 22 ↛ 23line 22 didn't jump to line 23 because the condition on line 22 was never true
23 notes += " [special price]"
24 return notes
26 @property
27 def payment_payer(self):
28 return self.model.member
30 def can_manage_payment(self, member):
31 return is_organiser(member, self.model.event) and member.has_perm(
32 "events.change_eventregistration"
33 )
35 @property
36 def tpay_allowed(self):
37 return self.model.event.tpay_allowed
39 @classproperty
40 def immutable_after_payment(self):
41 return True
43 @classproperty
44 def immutable_model_fields_after_payment(self):
45 return ["member", "event", "name", "payment_amount"]
48def register():
49 payables.register(EventRegistration, EventRegistrationPayable)