diff options
author | Alban Gruin | 2018-09-29 17:02:43 +0200 |
---|---|---|
committer | Alban Gruin | 2018-09-29 17:02:43 +0200 |
commit | fc1fc472931cae0ba3d0a0103c328f85b7b52586 (patch) | |
tree | f6be7fb6463ff29f26de8db5386729a4fc9f975b /management/parsers/ups2018.py | |
parent | a4000b40682c93efacec31308dce4a32eeac7ef7 (diff) | |
parent | c95740a4d97fc579f4f12a6abf01eac446fde1cc (diff) |
Merge branch 'stable/0.14.z' into prod/pa1ch/0.14.zv0.14.2-pa1ch
Signed-off-by: Alban Gruin <alban at pa1ch dot fr>
Diffstat (limited to 'management/parsers/ups2018.py')
-rw-r--r-- | management/parsers/ups2018.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/management/parsers/ups2018.py b/management/parsers/ups2018.py index 15c629a..522a26a 100644 --- a/management/parsers/ups2018.py +++ b/management/parsers/ups2018.py @@ -14,10 +14,12 @@ # along with celcatsanitizer. If not, see <http://www.gnu.org/licenses/>. from datetime import datetime, timedelta +from collections import OrderedDict import asyncio import calendar import json +import re from django.utils import timezone @@ -85,16 +87,20 @@ class Parser(AbstractParser): if event_year != year or event_week != week: return - course = Course.objects.create( - source=self.source, begin=begin, end=end - ) - data = event["text"].split("<br>") rooms = None if data[0] == "Global Event": return - i = 0 + course = Course.objects.create( + source=self.source, begin=begin, end=end + ) + + 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 ", @@ -103,11 +109,15 @@ class Parser(AbstractParser): i += 1 groups = data[i] - if i - 1 >= 0: - course.name = ", ".join(set(data[i - 1].split(';'))) + 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. + names = OrderedDict.fromkeys(data[i - 1].split(';')) + 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] |