1+ import enum
2+
13from django .db import models
24from django .utils .timezone import now
35
@@ -55,10 +57,20 @@ def __str__(self) -> str:
5557 )
5658
5759
60+ class EnrollmentType (enum .StrEnum ):
61+ BASE = "BASE"
62+ ADVANCED = "ADVANCED"
63+
64+ @classmethod
65+ def get_choices (cls ) -> list [tuple [str , str ]]:
66+ return [(v , v ) for v in cls ]
67+
68+
5869class Enrollment (models .Model ):
5970 timepad_event_id = models .CharField (max_length = 64 , null = True , blank = True )
6071 platim_url = models .CharField (max_length = 254 , null = True , blank = True )
6172
73+ type = models .CharField (max_length = 10 , choices = EnrollmentType .get_choices (), null = True , blank = True )
6274 start_date = models .DateField ()
6375 end_date = models .DateField ()
6476 end_registration_date = models .DateField ()
@@ -68,8 +80,11 @@ class Enrollment(models.Model):
6880 late_price_date_from = models .DateField ()
6981
7082 @staticmethod
71- def get_enrollment_with_active_registration () -> "Enrollment | None" :
72- return Enrollment .objects .filter (end_registration_date__gte = now ()).first ()
83+ def get_enrollment_with_active_registration (enrollment_type : EnrollmentType ) -> "Enrollment | None" :
84+ return Enrollment .objects .filter (
85+ type = enrollment_type ,
86+ end_registration_date__gte = now (),
87+ ).first ()
7388
7489 def __str__ (self ) -> str :
75- return f"Enrollment ({ self .start_date } - { self .end_date } )"
90+ return f"{ self . type . capitalize () } enrollment ({ self .start_date } - { self .end_date } )"
0 commit comments