diff options
-rw-r--r-- | admin.py | 8 | ||||
-rw-r--r-- | management/commands/timetables.py | 10 | ||||
-rw-r--r-- | models.py | 13 |
3 files changed, 29 insertions, 2 deletions
@@ -1,5 +1,5 @@ from django.contrib import admin -from edt.models import Timetable, Group, Room, Course +from edt.models import Timetable, LastUpdate, Group, Room, Course @admin.register(Timetable) @@ -8,6 +8,12 @@ class TimetableAdmin(admin.ModelAdmin): list_display = ("name", "url",) +@admin.register(LastUpdate) +class LastUpdateAdmin(admin.ModelAdmin): + list_display = ("timetable", "week", "year", "date",) + list_filter = ("timetable__name",) + + @admin.register(Group) class GroupAdmin(admin.ModelAdmin): fieldsets = ( diff --git a/management/commands/timetables.py b/management/commands/timetables.py index 6412b7e..21148c8 100644 --- a/management/commands/timetables.py +++ b/management/commands/timetables.py @@ -1,7 +1,7 @@ from django.core.management.base import BaseCommand, CommandError from django.db import transaction from django.utils import timezone -from edt.models import Timetable, Group, Room, Course +from edt.models import Timetable, LastUpdate, Group, Room, Course from bs4 import BeautifulSoup @@ -25,6 +25,14 @@ def process_timetable_week(timetable, year, week, soup, weeks_in_soup): course.save() + date = timezone.make_aware(datetime.datetime.now()) + try: + lastUpdate = LastUpdate.objects.get(timetable=timetable, year=year, week=week) + lastUpdate.date = date + except: + lastUpdate = LastUpdate(timetable=timetable, year=year, week=week, date=date) + lastUpdate.save() + def process_timetable(timetable, year, weeks): soup = get_xml(timetable.url) weeks_in_soup = get_weeks(soup) @@ -17,6 +17,19 @@ class Timetable(models.Model): verbose_name_plural = "emplois du temps" +class LastUpdate(models.Model): + timetable = models.ForeignKey(Timetable, on_delete=models.CASCADE, verbose_name="emploi du temps") + week = models.IntegerField(verbose_name="semaine") + year = models.IntegerField(verbose_name="année") + date = models.DateTimeField(verbose_name="date de mise à jour") + + + class Meta: + unique_together = ("timetable", "week", "year",) + verbose_name = "dernière mise à jour" + verbose_name_plural = "dernières mises à jour" + + class Group(models.Model): name = models.CharField(max_length=255, verbose_name="nom") timetable = models.ForeignKey(Timetable, on_delete=models.CASCADE, verbose_name="emploi du temps") |