Class for season concept

This commit is contained in:
Gregory Trullemans 2022-10-13 10:18:04 +02:00
parent 5be6ffed64
commit 41ad69261f
4 changed files with 114 additions and 58 deletions

View File

@ -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):

View File

@ -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():

View File

@ -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")

View File

@ -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)