From abe98ace076df7329984454754f22b3943cc1dd2 Mon Sep 17 00:00:00 2001 From: Julien Constant Date: Thu, 7 Sep 2023 13:25:30 +0200 Subject: [PATCH] Fix imprecision on `get_semester` util function --- core/tests.py | 21 ++++++++++++++++++++- core/utils.py | 10 +++++++--- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/core/tests.py b/core/tests.py index 5fffa6a5..5100964f 100644 --- a/core/tests.py +++ b/core/tests.py @@ -26,7 +26,7 @@ from django.utils.timezone import now from club.models import Membership from core.models import User, Group, Page, AnonymousUser from core.markdown import markdown -from core.utils import get_start_of_semester +from core.utils import get_semester, get_start_of_semester from sith import settings """ @@ -621,6 +621,25 @@ class UserIsInGroupTest(TestCase): class UtilsTest(TestCase): + + def test_get_semester(self): + autumn_month, autumn_day = settings.SITH_SEMESTER_START_AUTUMN + spring_month, spring_day = settings.SITH_SEMESTER_START_SPRING + + t1_autumn_day = date(2025, 1, 4) # between 1st January and 15 February + t2_autumn_day = date(2024, 9, 1) # between 15 August and 31 December + t3_autumn_day = date(2024, autumn_month, autumn_day) # on 15 August + + t1_spring_day = date(2023, 3, 1) # between 15 February and 15 August + t2_spring_day = date(2023, spring_month, spring_day) # on 15 February + + self.assertEqual(get_semester(t1_autumn_day), "A24") + self.assertEqual(get_semester(t2_autumn_day), "A24") + self.assertEqual(get_semester(t3_autumn_day), "A24") + + self.assertEqual(get_semester(t1_spring_day), "P23") + self.assertEqual(get_semester(t2_spring_day), "P23") + def test_get_start_of_semester(self): autumn_month, autumn_day = settings.SITH_SEMESTER_START_AUTUMN spring_month, spring_day = settings.SITH_SEMESTER_START_SPRING diff --git a/core/utils.py b/core/utils.py index 4efea817..5f115ab1 100644 --- a/core/utils.py +++ b/core/utils.py @@ -80,10 +80,14 @@ def get_start_of_semester(today=date.today()) -> date: def get_semester(d=date.today()): start = get_start_of_semester(d) - if start.month <= 6: - return "P" + str(start.year)[-2:] - else: + + if ( + start.month == settings.SITH_SEMESTER_START_AUTUMN[0] + and start.day == settings.SITH_SEMESTER_START_AUTUMN[1] + ): return "A" + str(start.year)[-2:] + else: + return "P" + str(start.year)[-2:] def file_exist(path):