From 69db0b22febe46aeee4c554f87f1fd1e2dd5669d Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Thu, 23 Nov 2023 22:11:35 +0100 Subject: [PATCH] Fix lint --- .../management/commands/untis_import_mysql.py | 2 +- .../untis/util/mysql/importers/absences.py | 4 +- .../untis/util/mysql/importers/common_data.py | 42 +++++++++---------- .../apps/untis/util/mysql/importers/events.py | 4 +- .../apps/untis/util/mysql/importers/exams.py | 2 +- .../untis/util/mysql/importers/holidays.py | 4 +- .../untis/util/mysql/importers/lessons.py | 18 +++----- .../util/mysql/importers/substitutions.py | 36 +++++++--------- .../apps/untis/util/mysql/importers/terms.py | 4 +- aleksis/apps/untis/util/mysql/main.py | 4 +- aleksis/apps/untis/util/mysql/util.py | 2 +- 11 files changed, 53 insertions(+), 69 deletions(-) diff --git a/aleksis/apps/untis/management/commands/untis_import_mysql.py b/aleksis/apps/untis/management/commands/untis_import_mysql.py index e4abbf5..2da36c8 100644 --- a/aleksis/apps/untis/management/commands/untis_import_mysql.py +++ b/aleksis/apps/untis/management/commands/untis_import_mysql.py @@ -27,4 +27,4 @@ class Command(BaseCommand): background = options["background"] school_id = options.get("school_id", None) version = options.get("plan_version", None) - command.run(background=background, version=version) + command.run(background=background, school_id=school_id, version=version) diff --git a/aleksis/apps/untis/util/mysql/importers/absences.py b/aleksis/apps/untis/util/mysql/importers/absences.py index 9d5e4e7..e5a0f23 100644 --- a/aleksis/apps/untis/util/mysql/importers/absences.py +++ b/aleksis/apps/untis/util/mysql/importers/absences.py @@ -55,7 +55,7 @@ def import_absences( for absence in tqdm(absences, desc="Import absences", **TQDM_DEFAULTS): import_ref = absence.absence_id - logger.info("Import absence {}".format(import_ref)) + logger.info(f"Import absence {import_ref}") if absence.absence_reason_id == 0: reason = unknown_reason @@ -181,7 +181,7 @@ def import_absences( date_start__lte=validity_range.date_end, date_end__gte=validity_range.date_start ): if a.import_ref_untis and a.import_ref_untis not in existing_absences: - logger.info("Absence {} deleted".format(a.id)) + logger.info(f"Absence {a.id} deleted") a.delete() return ref, created_substitutions diff --git a/aleksis/apps/untis/util/mysql/importers/common_data.py b/aleksis/apps/untis/util/mysql/importers/common_data.py index dab0e70..8ef716b 100644 --- a/aleksis/apps/untis/util/mysql/importers/common_data.py +++ b/aleksis/apps/untis/util/mysql/importers/common_data.py @@ -39,9 +39,7 @@ def import_subjects(validity_range: ValidityRange) -> Dict[int, chronos_models.S # Check if needed data are provided if not subject.name: raise RuntimeError( - "Subject ID {}: Cannot import subject without short name.".format( - subject.subject_id - ) + f"Subject ID {subject.subject_id}: Cannot import subject without short name." ) # Build values @@ -51,7 +49,7 @@ def import_subjects(validity_range: ValidityRange) -> Dict[int, chronos_models.S colour_bg = untis_colour_to_hex(subject.backcolor) import_ref = subject.subject_id - logger.info("Import subject {} …".format(short_name)) + logger.info(f"Import subject {short_name} …") # Get or create subject object by short name new_subject, created = chronos_models.Subject.objects.get_or_create( @@ -106,9 +104,7 @@ def import_teachers(validity_range: ValidityRange) -> Dict[int, core_models.Pers # Check if needed data are provided if not teacher.name: raise RuntimeError( - "Teacher ID {}: Cannot import teacher without short name.".format( - teacher.teacher_id - ) + f"Teacher ID {teacher.teacher_id}: Cannot import teacher without short name." ) # Build values @@ -117,7 +113,7 @@ def import_teachers(validity_range: ValidityRange) -> Dict[int, core_models.Pers last_name = teacher.longname if teacher.longname else teacher.name import_ref = teacher.teacher_id - logger.info("Import teacher {} (as person) …".format(short_name)) + logger.info(f"Import teacher {short_name} (as person) …") try: new_teacher = core_models.Person.objects.get(short_name__iexact=short_name) @@ -175,7 +171,7 @@ def import_classes( # Check if needed data are provided if not class_.name: raise RuntimeError( - "Class ID {}: Cannot import class without short name.".format(class_.teacher_id) + f"Class ID {class_.teacher_id}: Cannot import class without short name." ) # Build values @@ -185,7 +181,7 @@ def import_classes( owners = [teachers_ref[t_id] for t_id in teacher_ids] import_ref = class_.class_id - logger.info("Import class {} (as group) …".format(short_name)) + logger.info(f"Import class {short_name} (as group) …") try: new_group = core_models.Group.objects.get( @@ -274,16 +270,14 @@ def import_rooms(validity_range: ValidityRange) -> Dict[int, core_models.Room]: for room in tqdm(rooms, desc="Import rooms", **TQDM_DEFAULTS): if not room.name: - raise RuntimeError( - "Room ID {}: Cannot import room without short name.".format(room.room_id) - ) + raise RuntimeError(f"Room ID {room.room_id}: Cannot import room without short name.") # Build values short_name = room.name[:10] name = room.longname[:30] if room.longname else short_name import_ref = room.room_id - logger.info("Import room {} …".format(short_name)) + logger.info(f"Import room {short_name} …") new_room, created = core_models.Room.objects.get_or_create( short_name=short_name, @@ -336,7 +330,7 @@ def import_supervision_areas( colour_bg = untis_colour_to_hex(area.backcolor) import_ref = area.corridor_id - logger.info("Import supervision area {} …".format(short_name)) + logger.info(f"Import supervision area {short_name} …") new_area, created = chronos_models.SupervisionArea.objects.get_or_create( short_name=short_name, @@ -426,14 +420,16 @@ def import_supervision_areas( period_after_break = supervision.break_item.before_period_number # Delete supervision if no longer existing - if weekday in supervisions_ref: - if period_after_break in supervisions_ref[weekday]: - if supervision in supervisions_ref[weekday][period_after_break]: - delete = False + if ( + weekday in supervisions_ref + and period_after_break in supervisions_ref[weekday] + and supervision in supervisions_ref[weekday][period_after_break] + ): + delete = False if delete: supervision.delete() - logger.info(" Supervision {} deleted".format(supervision)) + logger.info(f" Supervision {supervision} deleted") ref[import_ref] = {"area": new_area, "supervisions": supervisions_ref} @@ -473,7 +469,7 @@ def import_time_periods( start_time = times_ref[period][0] end_time = times_ref[period][1] - logger.info("Import time period on weekday {} in the {}. period".format(weekday, period)) + logger.info(f"Import time period on weekday {weekday} in the {period}. period") new_time_period, created = chronos_models.TimePeriod.objects.get_or_create( weekday=weekday, @@ -528,7 +524,7 @@ def import_breaks( before_period.period if before_period else "-", ) - logger.info("Generate break {}".format(short_name)) + logger.info(f"Generate break {short_name}") new_break, created = chronos_models.Break.objects.get_or_create( after_period=after_period, @@ -571,7 +567,7 @@ def import_absence_reasons( name = reason.longname if reason.longname else short_name import_ref = reason.absence_reason_id - logger.info("Import absence reason {} …".format(short_name)) + logger.info(f"Import absence reason {short_name} …") new_reason, created = chronos_models.AbsenceReason.objects.get_or_create( import_ref_untis=import_ref, diff --git a/aleksis/apps/untis/util/mysql/importers/events.py b/aleksis/apps/untis/util/mysql/importers/events.py index 06522be..0841846 100644 --- a/aleksis/apps/untis/util/mysql/importers/events.py +++ b/aleksis/apps/untis/util/mysql/importers/events.py @@ -44,7 +44,7 @@ def import_events( for event in tqdm(events, desc="Import events", **TQDM_DEFAULTS): import_ref = event.event_id - logger.info("Import event {}".format(import_ref)) + logger.info(f"Import event {import_ref}") # Build values comment = event.text @@ -142,5 +142,5 @@ def import_events( validity_range.date_start, validity_range.date_end ): if e.import_ref_untis and e.import_ref_untis not in existing_events: - logger.info("Event {} deleted".format(e.id)) + logger.info(f"Event {e.id} deleted") e.delete() diff --git a/aleksis/apps/untis/util/mysql/importers/exams.py b/aleksis/apps/untis/util/mysql/importers/exams.py index b72deca..1eb1222 100644 --- a/aleksis/apps/untis/util/mysql/importers/exams.py +++ b/aleksis/apps/untis/util/mysql/importers/exams.py @@ -47,7 +47,7 @@ def import_exams( for exam in tqdm(exams, desc="Import exams", **TQDM_DEFAULTS): import_ref = exam.exam_id - logger.info("Import exam {}".format(import_ref)) + logger.info(f"Import exam {import_ref}") # Build values title = exam.name or "" diff --git a/aleksis/apps/untis/util/mysql/importers/holidays.py b/aleksis/apps/untis/util/mysql/importers/holidays.py index cd34a05..bc992a3 100644 --- a/aleksis/apps/untis/util/mysql/importers/holidays.py +++ b/aleksis/apps/untis/util/mysql/importers/holidays.py @@ -25,7 +25,7 @@ def import_holidays(validity_range: ValidityRange) -> Dict[int, chronos_models.H # Check if needed data are provided if not holiday.name: raise RuntimeError( - "Holiday ID {}: Cannot import holiday without short name.".format(import_ref) + f"Holiday ID {import_ref}: Cannot import holiday without short name." ) title = holiday.name[:50] @@ -34,7 +34,7 @@ def import_holidays(validity_range: ValidityRange) -> Dict[int, chronos_models.H date_start = untis_date_to_date(holiday.datefrom) date_end = untis_date_to_date(holiday.dateto) - logger.info("Import holiday {} …".format(title)) + logger.info(f"Import holiday {title} …") # Get or create holiday new_holiday, created = chronos_models.Holiday.objects.get_or_create( diff --git a/aleksis/apps/untis/util/mysql/importers/lessons.py b/aleksis/apps/untis/util/mysql/importers/lessons.py index 4a50d65..4b86873 100644 --- a/aleksis/apps/untis/util/mysql/importers/lessons.py +++ b/aleksis/apps/untis/util/mysql/importers/lessons.py @@ -88,7 +88,7 @@ def import_lessons( current_teacher_id = None # All part lessons (courses) for i, el in enumerate(raw_lesson_data_2): - logger.info(" Lesson part {}".format(i)) + logger.info(f" Lesson part {i}") # Get plain ids teacher_id = int(el[0]) if el[0] else 0 @@ -96,10 +96,7 @@ def import_lessons( class_ids = untis_split_third(el[17], conv=int) # Get teacher - if teacher_id != 0: - teacher = teachers_ref[teacher_id] - else: - teacher = None + teacher = teachers_ref[teacher_id] if teacher_id != 0 else None teachers = [teacher] if teacher else [] @@ -127,7 +124,7 @@ def import_lessons( course_group_not_found_and_not_created = False if get_site_preferences()["untis_mysql__use_course_groups"]: # Negative import_ref denotes a course group - group_import_ref = -int("{}{}".format(lesson_id, i)) + group_import_ref = -int(f"{lesson_id}{i}") # Search by parent groups, teachers/owners and subject qs = ( @@ -317,14 +314,11 @@ def import_lessons( # Sync time periods for j, time_period in enumerate(time_periods): - logger.info(" Import lesson period {}".format(time_period)) + logger.info(f" Import lesson period {time_period}") # Get room if provided rooms = rooms_per_periods[j] - if use_room_idx < len(rooms): - room = rooms[use_room_idx] - else: - room = None + room = rooms[use_room_idx] if use_room_idx < len(rooms) else None # Check if an old lesson period is provided old_lesson_period_qs = old_lesson_periods_qs.filter(period=time_period) @@ -354,7 +348,7 @@ def import_lessons( for lesson in chronos_models.Lesson.objects.filter(validity=validity_range): if lesson.lesson_id_untis and lesson.lesson_id_untis not in existing_lessons: - logger.info("Lesson {} deleted".format(lesson.id)) + logger.info(f"Lesson {lesson.id} deleted") with reversion.create_revision(): set_comment(_("Deleted by Untis import")) lesson.save() diff --git a/aleksis/apps/untis/util/mysql/importers/substitutions.py b/aleksis/apps/untis/util/mysql/importers/substitutions.py index 682462e..ab00c79 100644 --- a/aleksis/apps/untis/util/mysql/importers/substitutions.py +++ b/aleksis/apps/untis/util/mysql/importers/substitutions.py @@ -65,7 +65,7 @@ def import_substitutions( lesson_id = sub.lesson_idsubst - logger.info("Import substitution {}".format(sub_id)) + logger.info(f"Import substitution {sub_id}") # Time date = untis_date_to_date(sub.date) @@ -87,10 +87,7 @@ def import_substitutions( comment = sub.text # Teacher - if sub.teacher_idlessn != 0: - teacher_old = teachers_ref[sub.teacher_idlessn] - else: - teacher_old = None + teacher_old = teachers_ref[sub.teacher_idlessn] if sub.teacher_idlessn != 0 else None teachers = [] teacher_new = None @@ -112,7 +109,7 @@ def import_substitutions( if lesson_periods.exists(): lesson_period = lesson_periods[0] - logger.info(" Matching lesson period found ({})".format(lesson_period)) + logger.info(f" Matching lesson period found ({lesson_period})") else: lesson_period = None @@ -144,17 +141,16 @@ 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 - and not comment - ): - continue + if get_site_preferences()["untis_mysql__ignore_incomplete_substitutions"] and ( + not room_new + and not subject_new + and not teachers + and not cancelled + and not cancelled_for_teachers + and not comment + ): + continue if lesson_period: ( @@ -196,7 +192,7 @@ def import_substitutions( groups = [classes_ref[pk] for pk in untis_split_first(sub.classids, int)] room = room_old if not room_new and room_old else room_new - subject = subject_old if not subject_new else subject_new + subject = subject_new if subject_new else subject_old teachers = [teacher_old] if not teacher_new else [teacher_new] if not teacher_new and not teacher_old: teachers = [] @@ -273,7 +269,7 @@ def import_substitutions( if (s.import_ref_untis and s.import_ref_untis not in existing_subs) or ( s.absence_ref_untis and s.absence_ref_untis not in absence_substitutions ): - logger.info("Substitution {} deleted".format(s.id)) + logger.info(f"Substitution {s.id} deleted") s.delete() lesson_substitutions_in_range.exclude(lesson_period__lesson__validity=validity_range).delete() @@ -283,7 +279,7 @@ def import_substitutions( validity_range.date_start, validity_range.date_end ): if s.import_ref_untis and s.import_ref_untis not in existing_subs: - logger.info("Extra lesson {} deleted".format(s.id)) + logger.info(f"Extra lesson {s.id} deleted") s.delete() # Delete all no longer existing supervision substitutions @@ -292,7 +288,7 @@ def import_substitutions( ) for s in supervision_substitutions_in_range: if s.import_ref_untis and s.import_ref_untis not in existing_subs: - logger.info("Supervision substitution {} deleted".format(s.id)) + logger.info(f"Supervision substitution {s.id} deleted") s.delete() supervision_substitutions_in_range.exclude(supervision__validity=validity_range).delete() diff --git a/aleksis/apps/untis/util/mysql/importers/terms.py b/aleksis/apps/untis/util/mysql/importers/terms.py index c2cefb9..ea0baf8 100644 --- a/aleksis/apps/untis/util/mysql/importers/terms.py +++ b/aleksis/apps/untis/util/mysql/importers/terms.py @@ -94,9 +94,7 @@ def import_terms( school_terms = {} for term in tqdm(qs, desc="Import terms (as validity ranges)", **TQDM_DEFAULTS): if not term.name: - raise RuntimeError( - "Term ID {}: Cannot import term without short name.".format(term.term_id) - ) + raise RuntimeError(f"Term ID {term.term_id}: Cannot import term without short name.") term_id = term.term_id name = term.longname if term.longname else term.name date_start = untis_date_to_date(term.datefrom) diff --git a/aleksis/apps/untis/util/mysql/main.py b/aleksis/apps/untis/util/mysql/main.py index 3e66968..08fe20a 100644 --- a/aleksis/apps/untis/util/mysql/main.py +++ b/aleksis/apps/untis/util/mysql/main.py @@ -39,7 +39,7 @@ def untis_import_mysql( with reversion.create_revision(atomic=True): reversion.set_comment(f"Untis import for validity range {validity_range}") - tracker = TimetableDataChangeTracker() + tracker = TimetableDataChangeTracker() # noqa: F841 # Common data for Chronos subjects_ref = import_subjects(validity_range) @@ -55,7 +55,7 @@ def untis_import_mysql( breaks_ref = import_breaks(validity_range, time_periods_ref) # Holidays - holidays_ref = import_holidays(validity_range) + holidays_ref = import_holidays(validity_range) # noqa: F841 # Supervisions supervision_areas_ref = import_supervision_areas( diff --git a/aleksis/apps/untis/util/mysql/util.py b/aleksis/apps/untis/util/mysql/util.py index 439b54c..bc3deaf 100644 --- a/aleksis/apps/untis/util/mysql/util.py +++ b/aleksis/apps/untis/util/mysql/util.py @@ -175,7 +175,7 @@ def connect_untis_fields(obj: Model, attr: str, limit: int) -> Sequence[str]: all_data = [] for i in range(1, limit + 1): - attr_name = "{}{}".format(attr, i) + attr_name = f"{attr}{i}" raw_data = getattr(obj, attr_name, "") if raw_data: data = untis_split_first(raw_data) -- GitLab