diff options
author | Alban Gruin | 2018-09-23 19:40:17 +0200 |
---|---|---|
committer | Alban Gruin | 2018-09-23 19:40:17 +0200 |
commit | f9da11d173229ac9dc197fa25163479686b5d0d6 (patch) | |
tree | 5b8eb49e4fcbbb574e2c1c7578917907a6b53ea1 /management/parsers | |
parent | b0211666b3f3437a0496b9c9f03a3613698b9804 (diff) |
ups2018: détection du premier élément « utile » des données du cours
La plupart des cours contiennent un élément correspondant à l’heure de
début et de fin du cours. Lorsqu’un cours ne possède pas de nom, il
se peut que cet élément soit utilisé comme type, ce qui n’a pas de
sens. On va donc détecter la présence de cet élément à la première
place à l’aide d’une regex, et, si jamais il est présent, on n’utilise
pas le premier élément de la liste.
À l’origine, cet élément ne devait pas être utilisé pour cette raison,
mais ce comportement a été changé avec le commit ab6ca3c ("parsers:
correction de l’index du premier élément à analyser"), après la
détection de cours n’ayant pas cet élément.
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
Diffstat (limited to 'management/parsers')
-rw-r--r-- | management/parsers/ups2018.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/management/parsers/ups2018.py b/management/parsers/ups2018.py index 4ae7ef7..805c761 100644 --- a/management/parsers/ups2018.py +++ b/management/parsers/ups2018.py @@ -19,6 +19,7 @@ from collections import OrderedDict import asyncio import calendar import json +import re from django.utils import timezone @@ -95,7 +96,11 @@ class Parser(AbstractParser): if data[0] == "Global Event": return - i = 0 + min_i = 0 + if len(data) > 0 and re.match("^\(\d+:\d+-\d+:\d+\)$", data[0]): + min_i = 1 + + i = min_i while i < len(data) and not data[i].startswith( ("L1 ", "L2 ", "L3 ", "L3P ", "M1 ", "M2 ", "DEUST ", "MAG1 ", "1ERE ANNEE ", "2EME ANNEE ", "3EME ANNEE ", @@ -104,7 +109,7 @@ class Parser(AbstractParser): i += 1 groups = data[i] - if i - 1 >= 0: + if i - 1 >= min_i: # TODO: le jour où la version minimale supportée sera # Python 3.7, il sera possible de remplacer OrderedDict # par un dictionnaire classique. @@ -112,7 +117,7 @@ class Parser(AbstractParser): course.name = ", ".join(names.keys()) else: course.name = "Sans nom" - if i - 2 >= 0: + if i - 2 >= min_i: course.type = data[i - 2] if len(data) >= i + 2: rooms = data[i + 1] |