Skip to content
Snippets Groups Projects
Verified Commit d54ba71d authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Wrap the complete import in an atomic revision

parent 7d4ee88f
No related branches found
No related tags found
1 merge request!80Wrap the complete import in an atomic revision
Pipeline #23766 passed
......@@ -6,6 +6,14 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog`_,
and this project adheres to `Semantic Versioning`_.
Unreleased
----------
Changed
~~~~~~~
* Wrap all imports in complete revisions to make it possible to undo them completely and to track changes correctly.
`2.0rc1`_ - 2021-06-23
----------------------
......
from typing import Optional
from django.db import transaction
from django.db.models import QuerySet
import reversion
from tqdm import tqdm
from aleksis.apps.untis.util.mysql.importers.terms import import_terms
......@@ -25,7 +25,6 @@ from .importers.lessons import import_lessons
from .importers.substitutions import import_substitutions
@transaction.atomic
def untis_import_mysql(terms: Optional[QuerySet] = None):
# School terms and validity ranges
validity_ref = import_terms(terms)
......@@ -33,48 +32,58 @@ def untis_import_mysql(terms: Optional[QuerySet] = None):
for validity_range in tqdm(
validity_ref.values(), desc="Import data for terms", **TQDM_DEFAULTS
):
# Common data for Chronos
subjects_ref = import_subjects(validity_range)
rooms_ref = import_rooms(validity_range)
absence_reasons_ref = import_absence_reasons(validity_range)
with reversion.create_revision(atomic=True):
reversion.set_comment(f"UNTIS import for validity range {validity_range}")
# Common data for core
teachers_ref = import_teachers(validity_range)
classes_ref = import_classes(validity_range, teachers_ref)
# Common data for Chronos
subjects_ref = import_subjects(validity_range)
rooms_ref = import_rooms(validity_range)
absence_reasons_ref = import_absence_reasons(validity_range)
# Time periods
time_periods_ref = import_time_periods(validity_range)
breaks_ref = import_breaks(validity_range, time_periods_ref)
# Common data for core
teachers_ref = import_teachers(validity_range)
classes_ref = import_classes(validity_range, teachers_ref)
# Holidays
holidays_ref = import_holidays(validity_range)
# Time periods
time_periods_ref = import_time_periods(validity_range)
breaks_ref = import_breaks(validity_range, time_periods_ref)
# Supervisions
supervision_areas_ref = import_supervision_areas(validity_range, breaks_ref, teachers_ref)
# Holidays
holidays_ref = import_holidays(validity_range)
# Lessons
import_lessons(
validity_range, time_periods_ref, rooms_ref, subjects_ref, teachers_ref, classes_ref,
)
# Supervisions
supervision_areas_ref = import_supervision_areas(
validity_range, breaks_ref, teachers_ref
)
# Substitutions
import_absences(
validity_range,
absence_reasons_ref,
time_periods_ref,
teachers_ref,
classes_ref,
rooms_ref,
)
import_substitutions(
validity_range,
teachers_ref,
subjects_ref,
rooms_ref,
classes_ref,
supervision_areas_ref,
time_periods_ref,
)
# Lessons
import_lessons(
validity_range,
time_periods_ref,
rooms_ref,
subjects_ref,
teachers_ref,
classes_ref,
)
# Events
import_events(validity_range, time_periods_ref, teachers_ref, classes_ref, rooms_ref)
# Substitutions
import_absences(
validity_range,
absence_reasons_ref,
time_periods_ref,
teachers_ref,
classes_ref,
rooms_ref,
)
import_substitutions(
validity_range,
teachers_ref,
subjects_ref,
rooms_ref,
classes_ref,
supervision_areas_ref,
time_periods_ref,
)
# Events
import_events(validity_range, time_periods_ref, teachers_ref, classes_ref, rooms_ref)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment