From ac1e21312beefeaa29cf8c580ef9094abf370969 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Mon, 3 Sep 2018 13:45:24 +0200 Subject: utils: correction du format des semaines dans `get_weeks()` Les semaines étaient parsées avec le format de base de Python au lieu du format ISO-601. Selon le format de Python, le 1er Janvier 2019 fait partie de la 53ème semaine de l’an 2018, alors que selon ISO, il fait partie de la 1ère semaine de 2019. Étant donné que d’autres parties de celcatsanitizer gèrent les dates selon ISO, cela posait des problèmes de cohérence. Signed-off-by: Alban Gruin --- utils.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'utils.py') diff --git a/utils.py b/utils.py index cd7f1f8..55fce0b 100644 --- a/utils.py +++ b/utils.py @@ -34,6 +34,8 @@ def get_current_or_next_week(): def get_week(year, week): start = timezone.make_aware(datetime.datetime.strptime( "{0}-W{1}-1".format(year, week), "%Y-W%W-%w")) + if datetime.datetime(year, 1, 4).isoweekday() > 4: + start -= datetime.timedelta(weeks=1) end = start + datetime.timedelta(weeks=1) return start, end -- cgit v1.2.1 From 4b53705a15d07caa12c2ca43b00ad03a81e600bd Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Thu, 6 Sep 2018 17:10:54 +0200 Subject: groupes: ajout du support d’une nouvelle syntaxe Certains groupes ont la syntaxe suivante : L1 4L s1 CM4L L1 4L s1 TD4L1 L1 4L s1 TP4L12 etc. Le « 4 » entre le CM/TD/TP et le « numéro » fait échouer la regex. Ce commit rajoute le support de cette syntaxe, et ajoute les cas de test adéquats. Signed-off-by: Alban Gruin --- utils.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 55fce0b..26de36e 100644 --- a/utils.py +++ b/utils.py @@ -55,19 +55,20 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$ - # ^ début de la ligne - # (.+?) correspond à au moins un caractère - # \s* éventuellement un ou plusieurs espaces - # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces - # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » - # (\w\d{0,3}) suivi d’un caractère puis entre 0 et 3 chiffres - # )? groupe optionnel - # (\s+ un ou plusieurs espaces - # \([^\(\)]+\))? un ou plusieurs caractères (exceptés des espaces) entre parenthèses - # $ fin de la ligne + # ^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$ + # + # ^ début de la ligne + # (.+?) correspond à au moins un caractère + # \s* éventuellement un ou plusieurs espaces + # (s(\d)\s+ un s suivi d’un nombre et d’un ou plusieurs espaces + # (CM|TD|TP|G) « CM » ou « TD » ou « TP » ou « G » + # (\d?\w\d{0,3}) un chiffre optionnel, un caractère, entre 0 et 3 chiffres + # )? groupe optionnel + # (\s+ un ou plusieurs espaces + # \([^\(\)]+\))? un ou plusieurs caractères entre parenthèses + # $ fin de la ligne group_regex = re.compile( - r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\w\d{0,3}))?(\s+\([^\(\)]+\))?$") + r"^(.+?)\s*(s(\d)\s+(CM|TD|TP|G)(\d?\w\d{0,3}))?(\s+\([^\(\)]+\))?$") search = group_regex.search(name) if search is None: -- cgit v1.2.1