diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 30133f640ed2fd3a358104a49b1cfa823409d318..4458eeedd597df769772e69a1b0ec1a0ad451569 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -9,6 +9,11 @@ and this project adheres to `Semantic Versioning`_. Unreleased ---------- +Changed +~~~~~~~ + +* Do not import incomplete substitutions. + `2.1.1`_ - 2022-01-29 --------------------- diff --git a/aleksis/apps/untis/preferences.py b/aleksis/apps/untis/preferences.py index 56dbd3f55a8251535adfe9c418d91700b7738f3e..f3e3afdb1af7876a3671020c26445faf05547d25 100644 --- a/aleksis/apps/untis/preferences.py +++ b/aleksis/apps/untis/preferences.py @@ -89,3 +89,11 @@ class UseCourseGroups(BooleanPreference): help_text = _( "Build or search course groups for every course" " instead of setting classes as groups." ) + + +@site_preferences_registry.register +class IgnoreIncompleteSubstitutions(BooleanPreference): + section = untis_mysql + name = "ignore_incomplete_substitutions" + default = True + verbose_name = _("Ignore incomplete substitutions") diff --git a/aleksis/apps/untis/util/mysql/importers/substitutions.py b/aleksis/apps/untis/util/mysql/importers/substitutions.py index d499c06493fc45fdd5c6cf42e3d3c77d71f08cff..a7202efcdc09cc1c9a178cf66c9206a4e83ac798 100644 --- a/aleksis/apps/untis/util/mysql/importers/substitutions.py +++ b/aleksis/apps/untis/util/mysql/importers/substitutions.py @@ -8,6 +8,7 @@ from tqdm import tqdm from aleksis.apps.chronos import models as chronos_models from aleksis.apps.chronos.models import ValidityRange +from aleksis.core.util.core_helpers import get_site_preferences from .... import models as mysql_models from ..util import ( @@ -138,6 +139,17 @@ def import_substitutions( for id_ in class_ids: classes.append(classes_ref[id_]) + if get_site_preferences()["untis_mysql__ignore_incomplete_substitutions"]: + # Skip incomplete substitutions + if ( + not room_new + and not subject_new + and not teachers + and not cancelled + and not cancelled_for_teachers + ): + continue + if lesson_period: (substitution, created,) = chronos_models.LessonSubstitution.objects.get_or_create( lesson_period=lesson_period, week=week.week, year=week.year