From b0154d43011825731b0e4ff7c4f44b7f5770b3c2 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Sun, 26 Mar 2017 14:23:44 +0200 Subject: Modification de la regex de validation de groupe pour gérer globalement les licences entières Modification de la méthode de correspondance des groupes --- utils.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index cff4c9c..8e87c0f 100644 --- a/utils.py +++ b/utils.py @@ -49,25 +49,28 @@ def group_courses(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* zéro, un ou plusieurs espaces - # \- un tiret - # \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 - # $ fin de la ligne - group_regex = re.compile("^(.+?)\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d)))$") + # ^([\w ]+?)(\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$ + # ^ début de la ligne + # ([\w ]+?) correspond à au moins un caractère + # (\s* zéro, un ou plusieurs espaces + # \- un tiret + # \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 + # )? groupe optionel + # $ fin de la ligne + group_regex = re.compile("^([\w ]+?)(\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] + if parts[1] == 0: + return parts[0], None, None, None + elif parts[4] == "CM": + return parts[0], parts[5], None, None + elif parts[7] == "TD": + return parts[0], parts[8], parts[9], None + elif parts[11] == "TP": + return parts[0], parts[12], parts[13], parts[14] -- cgit v1.2.1 From d412a58b8fc7478846ae4ed9d7a15257f0aacd79 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 12 May 2017 11:07:17 +0200 Subject: Si la regex n'arrive pas à parser le groupe, alors la mention correspond au nom du groupe --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 8e87c0f..fe6ec4c 100644 --- a/utils.py +++ b/utils.py @@ -63,7 +63,7 @@ def parse_group(name): group_regex = re.compile("^([\w ]+?)(\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 + return name, None, None, None parts = search.groups(0) if parts[1] == 0: -- cgit v1.2.1 From cd67ce3c1eeca28d7cfeaa71cc67165ee71a5fd6 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Mon, 4 Sep 2017 16:09:24 +0200 Subject: Changement de la regex des groupes --- utils.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index fe6ec4c..8dc386f 100644 --- a/utils.py +++ b/utils.py @@ -49,18 +49,16 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^([\w ]+?)(\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$ - # ^ début de la ligne - # ([\w ]+?) correspond à au moins un caractère - # (\s* zéro, un ou plusieurs espaces - # \- un tiret - # \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 - # )? groupe optionel - # $ fin de la ligne - group_regex = re.compile("^([\w ]+?)(\s*\-\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$") + # ^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$ + # ^ début de la ligne + # ([\w ]+?) correspond à au moins un caractère + # (\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 + # )? groupe optionel + # $ fin de la ligne + group_regex = re.compile("^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$") search = group_regex.search(name) if search is None: return name, None, None, None -- cgit v1.2.1 From a6c5bfa4796081747e04ae4047007d5c8ad23164 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Mon, 4 Sep 2017 18:35:26 +0200 Subject: Ajout d’un champ « groupe parent » au modèle Group pour n’afficher que les groupes qui n’ont pas d’enfants. Par exemple, le groupe TPA21 aura comme parent le groupe TDA2, qui aura le groupe CMA comme parent. Pour l’instant, le parseur d’emploi du temps ne créée pas de telles relations. --- utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'utils.py') diff --git a/utils.py b/utils.py index 8dc386f..8630036 100644 --- a/utils.py +++ b/utils.py @@ -54,8 +54,8 @@ def parse_group(name): # ([\w ]+?) correspond à au moins un caractère # (\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 + # ((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 optionel # $ fin de la ligne group_regex = re.compile("^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$") -- cgit v1.2.1