diff options
author | Alban Gruin | 2017-11-26 18:20:52 +0100 |
---|---|---|
committer | Alban Gruin | 2017-11-26 18:20:52 +0100 |
commit | a05da3098077e89bdb1f120b92ab87e593e331f4 (patch) | |
tree | 3c7d6fad2fa63abd0d075efb0ee4bbec4f9b3204 /utils.py | |
parent | df5ef1a932170d55623bf0469ef56c5af9e62fa3 (diff) | |
parent | 8cd40466e5b1ef9f00cf88c9375289d235abc009 (diff) |
Merge branch 'dev/alban' into futur
Diffstat (limited to 'utils.py')
-rw-r--r-- | utils.py | 28 |
1 files changed, 18 insertions, 10 deletions
@@ -30,7 +30,7 @@ def get_current_or_next_week(): def get_week(year, week): start = timezone.make_aware(datetime.datetime.strptime( - "{0}-W{1:02d}-1".format(year, week), "%Y-W%W-%w")) + "{0}-W{1}-1".format(year, week), "%Y-W%W-%w")) end = start + datetime.timedelta(weeks=1) return start, end @@ -48,24 +48,32 @@ 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+\(.+\))?$ + # ^(.+?)\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 + # (.+?) 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* éventuellement un ou plusieurs espaces - # \(.+\))? un ou plusieurs caractères entre parenthèses + # (\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*\(.+\))?$") + 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 + return name, None, None parts = search.groups() - return parts[0], parts[5] + + # On retourne la section (parts[0]), le semestre (parts[2]) et le groupe (parts[5]) + if parts[2] is not None: + return parts[0], int(parts[2]), parts[5] + else: + # Si jamais le semestre n’est pas présent dans la chaine parsée, + # parts[2] sera à None et sa conversion vers un int va provoquer + # une erreur. + return parts[0], None, parts[5] def tz_now(): """Retourne la date et l’heure avec le bon fuseau horaire""" |