Commit 9d72cd99 authored by Joachim Kołodziejski's avatar Joachim Kołodziejski
Browse files

Rewrite class name generation and add SCHOOL_YEAR_MONTH and SCHOOL_YEAR_DAY settings

parent 6e099415
Loading
Loading
Loading
Loading
+2 −0
Changes for sample.env: 2 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -9,3 +9,5 @@ SITE_URL="http://localhost:8000"
# RQ_URL="redis://localhost:6379/0"
# TIME_ZONE="Etc/UTC"
# DATABASE_URL="sqlite:///db.sqlite3"
# SCHOOL_YEAR_MONTH=9
# SCHOOL_YEAR_DAY=1
+10 −18
Changes for voters/models.py: 10 added lines, 18 removed lines.
Original line number Diff line number Diff line
@@ -19,25 +19,17 @@ class Group(models.Model):
        super().clean()
        
    @property
    def class_name(self):
        start_of_school_year = (2000 + int(self.name.split('_')[0][1:]))
    def class_name(self) -> str | None:
        now = timezone.now()
        
        # check whether students have graduated
        if timezone.make_aware(datetime.datetime(year=start_of_school_year + 4, month = 9, day = 1)) < now:
            return None
        
        # chcek if start of school is correct (not in the future)
        if timezone.make_aware(datetime.datetime(year=start_of_school_year, month = 9, day = 1)) > now:
            return None
        
        # compute class number
        class_number = now.year - start_of_school_year

        if now >= timezone.make_aware(datetime.datetime(year=now.year, month = 9, day = 1)):
            class_number += 1
        
        return str(class_number) + self.name.split('_')[-1].capitalize()
        class_first_year = ((now.year//100)*100 + int(self.name.split('_')[0][1:]))
        class_number = now.year - class_first_year + 1
        school_year_start = timezone.make_aware(datetime.datetime(year=now.year, month=settings.SCHOOL_YEAR_MONTH, day=settings.SCHOOL_YEAR_DAY))
        if now < school_year_start:
            class_number -= 1
        if class_number <= 0:
            return
        class_letter = self.name.split('_')[-1].upper()
        return f"{class_number}{class_letter}"

    @property
    def display_name(self):
+7 −1
Changes for wybory/settings.py: 7 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -29,7 +29,9 @@ env = environ.Env(
    ALLOWED_HOSTS=(str, "localhost"),
    RQ_URL=(str, "redis://localhost:6379/0"),
    TIME_ZONE=(str, "Etc/UTC"),
    DATABASE_URL=(str, "sqlite:///db.sqlite3")
    DATABASE_URL=(str, "sqlite:///db.sqlite3"),
    SCHOOL_YEAR_MONTH=(int, 9),
    SCHOOL_YEAR_DAY=(int, 1),
)

environ.Env.read_env(BASE_DIR / '.env')
@@ -61,6 +63,10 @@ if ALLOWED_HOSTS == "":
else:
    ALLOWED_HOSTS = ALLOWED_HOSTS.split(",")

# misc
SCHOOL_YEAR_MONTH = env("SCHOOL_YEAR_MONTH")
SCHOOL_YEAR_DAY = env("SCHOOL_YEAR_DAY")

# Django messages
from django.contrib.messages import constants as messages
MESSAGE_TAGS = {