diff --git a/aleksis/apps/untis/util/mysql/importers/absences.py b/aleksis/apps/untis/util/mysql/importers/absences.py index 44d357f7def46d42c548571cd42b565fc7868967..05de71fdcad0b192b5ddd61f8f834bfaad9ac54e 100644 --- a/aleksis/apps/untis/util/mysql/importers/absences.py +++ b/aleksis/apps/untis/util/mysql/importers/absences.py @@ -6,7 +6,7 @@ from .... import models as mysql_models from ..util import ( run_default_filter, get_term, - untis_date_to_date, + untis_date_to_date, move_weekday_to_range, get_first_period, get_last_period, ) logger = logging.getLogger(__name__) @@ -52,21 +52,12 @@ def import_absences( weekday_to = date_to.weekday() # Check min/max weekdays - first_weekday = sorted(time_periods_ref.keys())[0] - last_weekday = sorted(time_periods_ref.keys())[-1] - - if weekday_from < first_weekday: - weekday_from = first_weekday - if weekday_from > last_weekday: - weekday_from = last_weekday - if weekday_to < first_weekday: - weekday_to = first_weekday - if weekday_to > last_weekday: - weekday_to = last_weekday + weekday_from = move_weekday_to_range(time_periods_ref, weekday_from) + weekday_to = move_weekday_to_range(time_periods_ref, weekday_to) # Check min/max periods - first_period = sorted(time_periods_ref[first_weekday].keys())[0] - last_period = sorted(time_periods_ref[first_weekday].keys())[-1] + first_period = get_first_period(time_periods_ref, weekday_from) + last_period = get_last_period(time_periods_ref, weekday_from) if period_from == 0: period_from = first_period diff --git a/aleksis/apps/untis/util/mysql/util.py b/aleksis/apps/untis/util/mysql/util.py index fc8c024070531b0cb5d36a0a343f597b578308aa..e98ab3157ac456d5cf1093d16d83b575b0065b38 100644 --- a/aleksis/apps/untis/util/mysql/util.py +++ b/aleksis/apps/untis/util/mysql/util.py @@ -147,3 +147,36 @@ def connect_untis_fields(obj: Model, attr: str, limit: int) -> List[str]: all_data += data return all_data + + +def get_first_weekday(time_periods_ref: dict) -> int: + """ Get first weekday from time periods reference """ + return sorted(time_periods_ref.keys())[0] + + +def get_last_weekday(time_periods_ref: dict) -> int: + """ Get last weekday from time periods reference """ + return sorted(time_periods_ref.keys())[-1] + + +def get_first_period(time_periods_ref: dict, weekday: int) -> int: + """ Get first period on a weekday from time periods reference """ + return sorted(time_periods_ref[weekday].keys())[0] + + +def get_last_period(time_periods_ref: dict, weekday: int) -> int: + """ Get last period an a weekday from time periods reference """ + return sorted(time_periods_ref[weekday].keys())[-1] + + +def move_weekday_to_range(time_periods_ref: dict, weekday: int) -> int: + """ Move weekday values into school week (e. g. saturday to friday) """ + first_weekday = get_first_weekday(time_periods_ref) + last_weekday = get_last_weekday(time_periods_ref) + + if weekday < first_weekday: + weekday = first_weekday + if weekday > last_weekday: + weekday = last_weekday + + return weekday