From 310c91fcd777a9e7c97379803e41d795a4661be7 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Sun, 22 Jan 2017 12:37:56 +0100 Subject: Stockage de la date de dernière mise à jour d'un emploi du temps par semaine et année --- admin.py | 8 +++++++- management/commands/timetables.py | 10 +++++++++- models.py | 13 +++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/admin.py b/admin.py index 233ed1d..d49c123 100644 --- a/admin.py +++ b/admin.py @@ -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) diff --git a/models.py b/models.py index 13ae3f4..d01dbf0 100644 --- a/models.py +++ b/models.py @@ -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") -- cgit v1.2.1