From 4ea7bf88338df2603ad3bcde7134bfdea6e05a5b Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Wed, 16 Dec 2020 12:23:56 +0100 Subject: [PATCH] Delete all substitutions and supervision substitutions which are out of validity Out of validity = Linked to a validity, but the validity range ends before the substitution's date Close #15 --- .../untis/util/mysql/importers/substitutions.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/aleksis/apps/untis/util/mysql/importers/substitutions.py b/aleksis/apps/untis/util/mysql/importers/substitutions.py index 42f51a3..30efbb0 100644 --- a/aleksis/apps/untis/util/mysql/importers/substitutions.py +++ b/aleksis/apps/untis/util/mysql/importers/substitutions.py @@ -235,13 +235,16 @@ def import_substitutions( logger.info(" Supervision substitution updated") # Delete all no longer existing substitutions - for s in chronos_models.LessonSubstitution.objects.within_dates( + lesson_substitutions_in_range = chronos_models.LessonSubstitution.objects.within_dates( validity_range.date_start, validity_range.date_end - ): + ) + for s in lesson_substitutions_in_range: if s.import_ref_untis and s.import_ref_untis not in existing_subs: logger.info("Substitution {} deleted".format(s.id)) s.delete() + lesson_substitutions_in_range.exclude(lesson_period__lesson__validity=validity_range).delete() + # Delete all no longer existing extra lessons for s in chronos_models.ExtraLesson.objects.within_dates( validity_range.date_start, validity_range.date_end @@ -251,9 +254,12 @@ def import_substitutions( s.delete() # Delete all no longer existing supervision substitutions - for s in chronos_models.SupervisionSubstitution.objects.filter( + supervision_substitutions_in_range = chronos_models.SupervisionSubstitution.objects.filter( date__gte=validity_range.date_start, date__lte=validity_range.date_end - ): + ) + for s in supervision_substitutions_in_range: if s.import_ref_untis and s.import_ref_untis not in existing_subs: logger.info("Supervision substitution {} deleted".format(s.id)) s.delete() + + supervision_substitutions_in_range.exclude(supervision__validity=validity_range).delete() -- GitLab