aboutsummaryrefslogtreecommitdiff
path: root/management/commands/timetables.py
diff options
context:
space:
mode:
Diffstat (limited to 'management/commands/timetables.py')
-rw-r--r--management/commands/timetables.py18
1 files changed, 7 insertions, 11 deletions
diff --git a/management/commands/timetables.py b/management/commands/timetables.py
index c82b0e4..45a57ee 100644
--- a/management/commands/timetables.py
+++ b/management/commands/timetables.py
@@ -17,20 +17,19 @@ from django.core.management.base import BaseCommand
from django.db import transaction
from django.utils import timezone
-from edt.models import Timetable, LastUpdate, Course
+from edt.models import Timetable, Course
+from edt.utils import get_week
from ._private import delete_courses_in_week, get_events, get_update_date, get_weeks, get_xml
import datetime
@transaction.atomic
def process_timetable_week(timetable, year, week, soup, weeks_in_soup):
- last_update_date = None
+ begin, end = get_weeks(year, week)
+
+ last_update_date = Course.objects.filter(begin__gte=start, begin__lt=end).aggregate(Max("last_update"))["last_update__max"]
new_update_date = get_update_date(soup)
- try:
- last_update = LastUpdate.objects.get(timetable=timetable, year=year, week=week)
- last_update_date = last_update.updated_at
- except:
- last_update = LastUpdate(timetable=timetable, year=year, week=week)
+ updated_at = timezone.make_aware(datetime.datetime.now())
if last_update_date is not None and new_update_date is not None and \
last_update_date >= new_update_date:
@@ -43,6 +42,7 @@ def process_timetable_week(timetable, year, week, soup, weeks_in_soup):
course.name = name
course.type = type_
course.notes = notes
+ course.updated_at = updated_at
course.groups.add(*groups)
if rooms is not None:
@@ -50,10 +50,6 @@ def process_timetable_week(timetable, year, week, soup, weeks_in_soup):
course.save()
- last_update.date = timezone.make_aware(datetime.datetime.now())
- last_update.updated_at = new_update_date
- last_update.save()
-
def process_timetable(timetable, year, weeks):
soup = get_xml(timetable.url)
weeks_in_soup = get_weeks(soup)