diff options
-rw-r--r-- | management/commands/_private.py | 25 | ||||
-rw-r--r-- | models.py | 2 |
2 files changed, 27 insertions, 0 deletions
diff --git a/management/commands/_private.py b/management/commands/_private.py index c31eb34..f7f8435 100644 --- a/management/commands/_private.py +++ b/management/commands/_private.py @@ -21,6 +21,8 @@ from edt.models import Group, Room, Course from edt.utils import get_week import datetime +import re + import requests @@ -122,6 +124,29 @@ def get_events(timetable, year, week, soup, weeks_in_soup): yield title, type_, groups, rooms, notes, begin, end +def get_update_date(soup): + # Explication de la regex + # + # (\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+) + # (\d+) au moins un nombre + # / un slash + # (\d+) au moins un nombre + # / un slash + # (\d+) au moins un nombre + # \s+ au moins un espace + # (\d+) au moins un nombre + # : un deux-points + # (\d+) au moins un nombre + # : un deux-points + # (\d+) au moins un nombre + datetime_regex = re.compile("(\d+)/(\d+)/(\d+)\s+(\d+):(\d+):(\d+)") + search = datetime_regex.search(soup.footer.text) + if search is None: + return None + + day, month, year, hour, minute, second = [int(v) for v in search.groups()] + return datetime.datetime(year, month, day, hour, minute, second) + def get_weeks(soup): weeks = {} for span in soup.find_all("span"): @@ -51,6 +51,8 @@ class LastUpdate(models.Model): year = models.IntegerField(verbose_name="année") date = models.DateTimeField(verbose_name="date de mise à jour") + updated_at = models.DateTimeField(verbose_name="date de publication", null=True) + def __str__(self): return "{0}, semaine {1} de {2}".format(self.timetable.name, self.week, self.year) |