From e665f1f2d73b609015c051690812cc6893c57a11 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Tue, 14 Apr 2020 21:40:40 +0200 Subject: [PATCH] Move util code for getting first/last weekdays/periods to util.py --- .../untis/util/mysql/importers/absences.py | 19 +++-------- aleksis/apps/untis/util/mysql/util.py | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/aleksis/apps/untis/util/mysql/importers/absences.py b/aleksis/apps/untis/util/mysql/importers/absences.py index 44d357f..05de71f 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 fc8c024..e98ab31 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 -- GitLab