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 492ac0654db23d5e80c71c4e8f58a6ddf71c3f43..011f6bd31825a994e7c707ef48b048649db6bf4f 100644 --- a/aleksis/apps/untis/preferences.py +++ b/aleksis/apps/untis/preferences.py @@ -108,3 +108,10 @@ class CreateObjectsForWhichUntisIsNotPrimarySource(BooleanPreference): name = "create_objects_untis_not_primary_source" default = True verbose_name = _("Create objects for which Untis is not primary source") + + +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