diff --git a/aleksis/apps/untis/util/mysql/importers/substitutions.py b/aleksis/apps/untis/util/mysql/importers/substitutions.py index 42f51a3eb0dededc37b6278e715355960bf6c8e5..30efbb05202a233d98f4cc30bc581c423f8d54d0 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()