diff options
-rw-r--r-- | management/commands/_private.py | 34 |
1 files changed, 10 insertions, 24 deletions
diff --git a/management/commands/_private.py b/management/commands/_private.py index e018e3a..0b26b4e 100644 --- a/management/commands/_private.py +++ b/management/commands/_private.py @@ -24,22 +24,9 @@ from edt.utils import get_week import requests - -class Week: - def __init__(self, number, start): - self.number = number - self.start = timezone.make_aware( - datetime.datetime.strptime(start, "%d/%m/%Y")) - - def get_day(self, day_id): - return self.start + datetime.timedelta(day_id) - - @property - def year(self): - return self.start.year - def add_time(date, time): - delta = datetime.timedelta(hours=time.hour, minutes=time.minute) + ptime = datetime.datetime.strptime(time, "%H:%M") + delta = datetime.timedelta(hours=ptime.hour, minutes=ptime.minute) return date + delta def consolidate_group(group): @@ -98,21 +85,20 @@ def get_events(timetable, soup, weeks_in_soup, year=None, week=None): Le traîtement se limitera à la semaine indiquée si il y en a une.""" for event in soup.find_all("event"): event_week = weeks_in_soup[event.rawweeks.text] + event_week_num = event_week.isocalendar()[1] # Numéro de semaine # On passe le traitement si la semaine de l’événement ne correspond pas # à la semaine passée, ou qu’il ne contient pas de groupe ou n’a pas de # date de début ou de fin. - if (event_week.number == week and event_week.year == year or \ + if (event_week_num == week and event_week.year == year or \ year is None or week is None) and \ event.resources.group is not None and \ event.starttime is not None and event.endtime is not None: # On récupère la date de l’évènement à partir de la semaine - # et de la semaine référencée, puis la date de début et de fin - date = event_week.get_day(int(event.day.text)) - begin = add_time(date, datetime.datetime.strptime( - event.starttime.text, "%H:%M")) - end = add_time(date, datetime.datetime.strptime( - event.endtime.text, "%H:%M")) + # et de la semaine référencée, puis l’heure de début et de fin + date = event_week + datetime.timedelta(int(event.day.text)) + begin = add_time(date, event.starttime.text) + end = add_time(date, event.endtime.text) # Création de l’objet cours course = Course.objects.create(timetable=timetable, begin=begin, @@ -182,8 +168,8 @@ def get_update_date(soup): def get_weeks(soup): weeks = {} for span in soup.find_all("span"): - weeks[span.alleventweeks.text] = Week(int(span.title.text), - span["date"]) + weeks[span.alleventweeks.text] = timezone.make_aware( + datetime.datetime.strptime(span["date"], "%d/%m/%Y")) return weeks |