From 7f0dac074465ef838788202b80988005c35c0833 Mon Sep 17 00:00:00 2001 From: Alban Gruin Date: Fri, 6 Oct 2017 18:52:52 +0200 Subject: Si on force une mise à jour, on efface les cours autant qu’on peut au lieu de le faire à partir du lancement du traitement --- management/commands/timetables.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/management/commands/timetables.py b/management/commands/timetables.py index 8945950..a152f9e 100644 --- a/management/commands/timetables.py +++ b/management/commands/timetables.py @@ -26,7 +26,13 @@ from ._private import delete_courses_in_week, get_events, get_update_date, get_w @transaction.atomic def process_timetable_week(timetable, soup, weeks_in_soup, force, year=None, week=None): - today = timezone.make_aware(datetime.datetime.now()) + begin, end = get_week(year, week) + # Si on force la mise à jour, on définit de moment + # de la mise à jour au début de la semaine + if force: + today = begin + else: + today = timezone.make_aware(datetime.datetime.now()) # On récupère la mise à jour la plus ancienne dans les cours de l’emploi du temps # commençant à partir de maintenant @@ -34,7 +40,6 @@ def process_timetable_week(timetable, soup, weeks_in_soup, force, year=None, wee if year is not None and week is not None: # Si jamais on traite une semaine spécifique, on limite les cours sélectionnés # à ceux qui commencent entre le début du traitement et la fin de la semaine - _, end = get_week(year, week) last_update_date = last_update_date.filter(begin__lt=end) last_update_date = last_update_date.aggregate(Min("last_update")) \ @@ -60,7 +65,10 @@ def process_timetable_week(timetable, soup, weeks_in_soup, force, year=None, wee # Sinon, on efface tous les cours à partir de maintenant. # Précisément, on prend la plus grande valeur entre la première semaine # présente dans Celcat et maintenant. - delete_from = max(min(weeks_in_soup.values()), today) # Vraiment utile ? + delete_from = min(weeks_in_soup.values()) + if not force: + # Si jamais on force la MàJ, on efface tout à partir de la première semaine + delete_from = max(delete_from, today) Course.objects.filter(timetable=timetable, begin__gte=delete_from).delete() # Tous les cours commençant sur la période traitée -- cgit v1.2.1