diff --git a/ultron/tools/date_week_transition.py b/ultron/tools/date_week_transition.py index 656d965c65..7bef68c1f7 100644 --- a/ultron/tools/date_week_transition.py +++ b/ultron/tools/date_week_transition.py @@ -4,53 +4,6 @@ vice-versa (de numéro de semaine en date). """ import pendulum -import re - - -def is_valid_season(season): - """ Test si une chaine de caractère correspond bien à une saison - - Args: - season string saison sous la forme "xxxx-xxxy" - - Returns: - bool vrai si la chaine de caractère correspond à une saison. - - Examples: - >>> from ultron.tools.date_week_transition import is_valid_season - >>> is_valid_season("2022-2023") - >>> True - - >>> is_valid_season("2022-2024") - >>> False - - >>> is_valid_season("2024-2023") - >>> False - - >>> is_valid_season("1358-5682") - >>> False - - >>> is_valid_season("fgkrs-gkml") - >>> False - - >>> is_valid_season("drgnldsjgklfdtngl") - >>> False - """ - dash_position = season.find("-") - if dash_position < 0: - return False - - pattern = "^[0-9]{4}-[0-9]{4}$" - if not re.search(pattern, season): - return False - - first_year = int(season[:dash_position]) - second_year = int(season[dash_position + 1:]) - - if first_year != second_year - 1: - return False - - return True def from_week_number_to_date(season, week_number): diff --git a/ultron/tools/models.py b/ultron/tools/models.py index 0e76419f22..30e11016ff 100644 --- a/ultron/tools/models.py +++ b/ultron/tools/models.py @@ -10,6 +10,63 @@ from .date_week_transition import ( ) import markdown import pendulum +import re + +class Season: + """ Class pour représenter une saison """ + def __init__(self, label=None): + self.label = label + if not self.is_valid(): + the_date = pendulum.today().date() + if the_date.month >= 9: # nouvelle saison + self.label = str(the_date.year) + "-" + str(the_date.year + 1) + else: + self.label = str(the_date.year - 1) + "-" + str(the_date.year) + + def is_valid(self): + """ Test si une chaine de caractère correspond bien à une saison + + Args: + season string saison sous la forme "xxxx-xxxy" + + Returns: + bool vrai si la chaine de caractère correspond à une saison. + + Examples: + >>> from ultron.tools.date_week_transition import is_valid_season + >>> is_valid_season("2022-2023") + >>> True + + >>> is_valid_season("2022-2024") + >>> False + + >>> is_valid_season("2024-2023") + >>> False + + >>> is_valid_season("1358-5682") + >>> False + + >>> is_valid_season("fgkrs-gkml") + >>> False + + >>> is_valid_season("drgnldsjgklfdtngl") + >>> False + """ + dash_position = self.label.find("-") + if dash_position < 0: + return False + + pattern = "^[0-9]{4}-[0-9]{4}$" + if not re.search(pattern, self.label): + return False + + first_year = int(self.label[:dash_position]) + second_year = int(self.label[dash_position + 1:]) + + if first_year != second_year - 1: + return False + + return True def get_default_date(): diff --git a/ultron/tools/tests_date_week_transition.py b/ultron/tools/tests_date_week_transition.py index 646377c280..1cf2cdf4d6 100644 --- a/ultron/tools/tests_date_week_transition.py +++ b/ultron/tools/tests_date_week_transition.py @@ -5,7 +5,6 @@ from datetime import datetime import pytz from ultron.tools.date_week_transition import ( - is_valid_season, from_date_to_week_number, from_week_number_to_date, get_number_of_weeks_between, @@ -14,16 +13,7 @@ from ultron.tools.date_week_transition import ( import pendulum -class URLTestCase(TestCase): - - def test_is_valid_season(self): - self.assertEqual(is_valid_season("2022-2023"), True) - self.assertEqual(is_valid_season("2022-2024"), False) - self.assertEqual(is_valid_season("2024-2023"), False) - self.assertEqual(is_valid_season("1358-5682"), False) - self.assertEqual(is_valid_season("fgkrs-gkml"), False) - self.assertEqual(is_valid_season("drgnldsjgklfdtngl"), False) - self.assertEqual(is_valid_season("12675353878354"), False) +class FunctionTestCase(TestCase): def test_from_week_number_to_date(self): timezone = pytz.timezone("UTC") diff --git a/ultron/tools/tests_models.py b/ultron/tools/tests_models.py new file mode 100644 index 0000000000..28b5176bee --- /dev/null +++ b/ultron/tools/tests_models.py @@ -0,0 +1,56 @@ +""" Test des models """ + +from django.test import TestCase +from .models import Season +import pendulum + + +class ModelTestCase(TestCase): + + def test_init_season(self): + season = Season("2022-2023") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("2022-2024") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("2024-2023") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("1358-5682") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("fgkrs-gkml") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("drgnldsjgklfdtngl") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + season = Season("12675353878354") + self.assertEqual(season.is_valid(), True) + self.assertEqual(season.label, "2022-2023") + + def test_season_is_valid(self): + season = Season("2022-2023") + self.assertEqual(season.is_valid(), True) + + season.label = "2022-2024" + self.assertEqual(season.is_valid(), False) + + season.label = "1358-5682" + self.assertEqual(season.is_valid(), False) + + season.label = "fgkrs-gkml" + self.assertEqual(season.is_valid(), False) + + season.label = "drgnldsjgklfdtngl" + self.assertEqual(season.is_valid(), False) + + season.label = "drgnldsjgklfdtngl" + self.assertEqual(season.is_valid(), False)