Class for season concept
This commit is contained in:
parent
5be6ffed64
commit
41ad69261f
|
@ -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):
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue