From 60092220ca3c47a20f50b677a2bb2173ae3f89a3 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Mon, 27 Feb 2017 09:52:08 +0100 Subject: Parsage du nom des groupes basé sur une regex pour éviter les problèmes liés à l'ancienne méthode --- utils.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 4ce3a21..090142b 100644 --- a/utils.py +++ b/utils.py @@ -17,6 +17,7 @@ from django.utils import timezone import datetime +import re def get_current_week(): return timezone.now().isocalendar()[:2] @@ -44,3 +45,17 @@ def group_courses(courses): grouped_courses[-1].append(course) return grouped_courses + +def parse_group(name): + group_regex = re.compile("^(.+?)\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d)))$") + search = group_regex.search(name) + if search is None: + return None, None, None, None + + parts = search.groups(0) + if parts[3] == "CM": + return parts[0], parts[4], None, None + elif parts[6] == "TD": + return parts[0], parts[7], parts[8], None + elif parts[10] == "TP": + return parts[0], parts[11], parts[12], parts[13] -- cgit v1.2.1 From 990b45c050d287ee86483faaa32db25e392a7605 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 28 Feb 2017 09:15:00 +0100 Subject: Explication de la regex --- utils.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 090142b..2de7ef0 100644 --- a/utils.py +++ b/utils.py @@ -47,6 +47,18 @@ def group_courses(courses): return grouped_courses def parse_group(name): + # Explication de la regex + # + # ^(.+?)\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d)))$ + # ^ début de la ligne + # (.+?) correspond à au moins un caractère + # \s* au moins un espace + # \- un tiret + # \s* au moins un espace + # (((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 + # $ fin de la ligne group_regex = re.compile("^(.+?)\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d)))$") search = group_regex.search(name) if search is None: -- cgit v1.2.1 From 1718988d65a9601a8d2d953da6c1fedc57a6a18c Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Tue, 28 Feb 2017 11:53:01 +0100 Subject: Correction de l'explication de la regex --- utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 2de7ef0..cff4c9c 100644 --- a/utils.py +++ b/utils.py @@ -52,9 +52,9 @@ def parse_group(name): # ^(.+?)\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d)))$ # ^ début de la ligne # (.+?) correspond à au moins un caractère - # \s* au moins un espace + # \s* zéro, un ou plusieurs espaces # \- un tiret - # \s* au moins un espace + # \s* zéro, 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 -- cgit v1.2.1