diff --git a/aleksis/apps/untis/util/mysql/importers/common_data.py b/aleksis/apps/untis/util/mysql/importers/common_data.py index 1e0446562ffc0731649b4c2416594f0445ba8b08..135714eb9238a241b13160068ae56db879342e3c 100644 --- a/aleksis/apps/untis/util/mysql/importers/common_data.py +++ b/aleksis/apps/untis/util/mysql/importers/common_data.py @@ -453,6 +453,8 @@ def import_supervision_areas( if delete: with create_revision(): set_comment(_("Deleted by Untis import")) + if supervision.supervision_event: + supervision.supervision_event.delete() supervision.delete() logger.info(f" Supervision {supervision.id} deleted") diff --git a/aleksis/apps/untis/util/mysql/importers/lessons.py b/aleksis/apps/untis/util/mysql/importers/lessons.py index ada52804ee168842d1e1de7f31b386b95984e25c..4fc8eaeddc20ef832d060777547c59877907ff82 100644 --- a/aleksis/apps/untis/util/mysql/importers/lessons.py +++ b/aleksis/apps/untis/util/mysql/importers/lessons.py @@ -8,6 +8,7 @@ import reversion from reversion import set_comment from tqdm import tqdm +from aleksis.apps.chronos.models import LessonEvent from aleksis.apps.cursus import models as cursus_models from aleksis.apps.lesrooster import models as lesrooster_models from aleksis.core import models as core_models @@ -371,8 +372,11 @@ def import_lessons( existing_lesson_pks.append(lesson.pk) # delete all no-longer existing lesson periods - old_lessons_qs.exclude(pk__in=existing_lesson_pks).delete() - logger.info(" Old lessons deleted") + for old_lesson in old_lessons_qs.exclude(pk__in=existing_lesson_pks): + logger.info(f" Old lesson {old_lesson.id} deleted") + if old_lesson.lesson_event: + old_lesson.lesson_event.delete() + old_lesson.delete() current_teacher_id = teacher_id for lesson in lesrooster_models.Lesson.objects.filter( @@ -383,4 +387,17 @@ def import_lessons( logger.info(f"Lesson {lesson.id} deleted") with reversion.create_revision(): set_comment(_("Deleted by Untis import")) + if lesson.lesson_event: + lesson.lesson_event.delete() lesson.delete() + + lesson_event_pks = lesrooster_models.Lesson.objects.filter( + extended_data__lesson_id_untis__in=existing_lessons, lesson_event__isnull=False + ).values_list("lesson_event_id", flat=True) + for lesson_event in LessonEvent.objects.filter( + rrule_until__date__gte=validity_range.date_start, + datetime_start__date__lt=validity_range.start, + ).exclude(pk__in=lesson_event_pks): + logger.warning(f"Tag lesson event {lesson_event.id} for deletion") + lesson_event.extended_data["delete_by_untis"] = True + lesson_event.save()