From 640496deb262349101567de12d2476cbfe5065b3 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Sat, 14 Oct 2017 11:25:46 +0200 Subject: timezone.now() retourne l’heure UTC, ce qui empêche la mise à jour de la semaine prochaine le samedi à minuit. Remplacement de ces appels par une fonction qui retourne la bonne heure dans le bon fuseau horaire. --- utils.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index bd337e4..28a1ba2 100644 --- a/utils.py +++ b/utils.py @@ -19,12 +19,12 @@ import re from django.utils import timezone def get_current_week(): - return timezone.now().isocalendar()[:2] + return tz_now().isocalendar()[:2] def get_current_or_next_week(): - year, week, day = timezone.now().isocalendar() + year, week, day = tz_now().isocalendar() if day >= 6: - year, week, _ = (timezone.now() + datetime.timedelta(weeks=1)).isocalendar() + year, week, _ = (tz_now() + datetime.timedelta(weeks=1)).isocalendar() return year, week @@ -74,3 +74,7 @@ def parse_group(name): return parts[0], parts[5], parts[6], None elif parts[7] is not None: # Groupe de TP return parts[0], parts[8], parts[9], parts[10] + +def tz_now(): + """Retourne la date et l’heure avec le bon fuseau horaire""" + return timezone.make_aware(datetime.datetime.now()) -- cgit v1.2.1 From e13b5bb8b08c336f61403480df6bbfbe29f2316b Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Thu, 19 Oct 2017 14:04:41 +0200 Subject: Changement radical du fonctionnement de la regex en vue d’un gros changement de la structure de la base de données --- utils.py | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 28a1ba2..5d55eca 100644 --- a/utils.py +++ b/utils.py @@ -48,32 +48,24 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^(.+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s+\(.+\))?$ - # ^ début de la ligne - # (.+?) correspond à au moins un caractère - # \s+ un ou plusieurs espaces - # ((CM(\w))| correspond à CM suivi d'une lettre ou… - # (TD(\w)(\d))| … à TD suivi d’une lettre et d'un chiffre ou… - # (TP(\w)(\d)(\d)) … à TP suivi d’une lettre et de deux chiffres - # )? groupe optionnel - # (\s+ un ou plusieurs espaces - # \(.+\)) un ou plusieurs caractères quelconques entre parenthèses - # ? groupe optionnel - # $ fin de la ligne - group_regex = re.compile(r"^(.+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s+\(.+\))?$") + # ^(.+?)\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+)? éventuellement 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 pliseurs 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+\(.+\))?$") search = group_regex.search(name) if search is None: - return name, None, None, None + return name, None parts = search.groups() - if parts[1] is None: # Pas de groupe précis indiqué - return parts[0], None, None, None - elif parts[2] is not None: # Groupe de CM - return parts[0], parts[3], None, None - elif parts[4] is not None: # Groupe de TD - return parts[0], parts[5], parts[6], None - elif parts[7] is not None: # Groupe de TP - return parts[0], parts[8], parts[9], parts[10] + return parts[0], parts[4] def tz_now(): """Retourne la date et l’heure avec le bon fuseau horaire""" -- cgit v1.2.1