aboutsummaryrefslogtreecommitdiff
path: root/utils.py
diff options
context:
space:
mode:
authorAlban Gruin2017-11-07 18:04:31 +0100
committerAlban Gruin2017-11-07 18:04:31 +0100
commitffffd9842dbaba0b0e89ff5f434f45792e2b73b6 (patch)
tree8e771d2e87e3fcc28efd1bd3beb4583af8231f88 /utils.py
parentae3358c1296a02352409910a9ffcc2307d5ea87a (diff)
parent04ca9906dccbfd290a08aef037873302ff7eac3d (diff)
Merge branch 'stable/0.11.z' into prod/pa1ch/0.y.zv0.11.0-pa1ch
Diffstat (limited to 'utils.py')
-rw-r--r--utils.py46
1 files changed, 21 insertions, 25 deletions
diff --git a/utils.py b/utils.py
index bd337e4..5d55eca 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
@@ -48,29 +48,25 @@ 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"""
+ return timezone.make_aware(datetime.datetime.now())