diff options
author | Alban Gruin | 2017-10-03 09:28:49 +0200 |
---|---|---|
committer | Alban Gruin | 2017-10-03 09:28:49 +0200 |
commit | ae3358c1296a02352409910a9ffcc2307d5ea87a (patch) | |
tree | b47df3b99f639acc24d751cc0a6a73937c10069b /utils.py | |
parent | 9641fc9bb6ef2897c0d70e6d5d5ed3f8e295dbec (diff) | |
parent | 175fcd46f56d8c1c5d10a50b401c09c25cfcdf82 (diff) |
Merge branch 'stable/0.10.z' into prod/pa1ch/0.y.zv0.10.0-pa1ch
Diffstat (limited to 'utils.py')
-rw-r--r-- | utils.py | 39 |
1 files changed, 21 insertions, 18 deletions
@@ -13,11 +13,11 @@ # You should have received a copy of the GNU Affero General Public License # along with celcatsanitizer. If not, see <http://www.gnu.org/licenses/>. -from django.utils import timezone - import datetime import re +from django.utils import timezone + def get_current_week(): return timezone.now().isocalendar()[:2] @@ -48,26 +48,29 @@ def group_courses(courses): def parse_group(name): # Explication de la regex # - # ^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$ + # ^(.+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s+\(.+\))?$ # ^ 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 + # (.+?) 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("^([\w ]+?)(\s*(((CM)(\w))|((TD)(\w)(\d))|((TP)(\w)(\d)(\d))))?$") + group_regex = re.compile(r"^(.+?)\s+((CM(\w))|(TD(\w)(\d))|(TP(\w)(\d)(\d)))?(\s+\(.+\))?$") search = group_regex.search(name) if search is None: return name, None, None, None - parts = search.groups(0) - if parts[1] == 0: + parts = search.groups() + if parts[1] is None: # Pas de groupe précis indiqué 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] + 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] |