From 193e1d0e45bc24b8e9ba62d496b6e77a749ad696 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Tue, 17 Nov 2020 12:16:53 +0100
Subject: [PATCH] Reformat according to black line length of 100

---
 aleksis/apps/alsijil/forms.py                |  6 +-
 aleksis/apps/alsijil/model_extensions.py     | 69 ++++------------
 aleksis/apps/alsijil/models.py               | 22 ++----
 aleksis/apps/alsijil/preferences.py          |  4 +-
 aleksis/apps/alsijil/rules.py                | 45 ++++-------
 aleksis/apps/alsijil/urls.py                 | 32 ++------
 aleksis/apps/alsijil/util/alsijil_helpers.py | 12 +--
 aleksis/apps/alsijil/views.py                | 82 ++++++--------------
 8 files changed, 70 insertions(+), 202 deletions(-)

diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py
index 08638432e..9624e5208 100644
--- a/aleksis/apps/alsijil/forms.py
+++ b/aleksis/apps/alsijil/forms.py
@@ -100,9 +100,9 @@ class SelectForm(forms.Form):
             pk__in=list(group_qs.values_list("pk", flat=True))
         )
 
-        teacher_qs = Person.objects.annotate(
-            lessons_count=Count("lessons_as_teacher")
-        ).filter(lessons_count__gt=0)
+        teacher_qs = Person.objects.annotate(lessons_count=Count("lessons_as_teacher")).filter(
+            lessons_count__gt=0
+        )
 
         # Filter selectable teachers by permissions
         if not check_global_permission(self.request.user, "alsijil.view_week"):
diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py
index 452de0fcb..b3fc034fd 100644
--- a/aleksis/apps/alsijil/model_extensions.py
+++ b/aleksis/apps/alsijil/model_extensions.py
@@ -63,11 +63,7 @@ def mark_absent(
                     lesson_period=lesson_period,
                     week=wanted_week.week,
                     year=wanted_week.year,
-                    defaults={
-                        "absent": absent,
-                        "excused": excused,
-                        "excuse_type": excuse_type,
-                    },
+                    defaults={"absent": absent, "excused": excused, "excuse_type": excuse_type,},
                 )
             )
             personal_note.groups_of_person.set(self.member_of.all())
@@ -112,10 +108,7 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek):
     # Create all missing personal notes
     new_personal_notes = [
         PersonalNote(
-            person=person,
-            lesson_period=self,
-            week=wanted_week.week,
-            year=wanted_week.year,
+            person=person, lesson_period=self, week=wanted_week.week, year=wanted_week.year,
         )
         for person in missing_persons
     ]
@@ -126,10 +119,7 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek):
 
     return (
         PersonalNote.objects.filter(
-            lesson_period=self,
-            week=wanted_week.week,
-            year=wanted_week.year,
-            person__in=persons,
+            lesson_period=self, week=wanted_week.week, year=wanted_week.year, person__in=persons,
         )
         .select_related(None)
         .prefetch_related(None)
@@ -141,19 +131,13 @@ def get_personal_notes(self, persons: QuerySet, wanted_week: CalendarWeek):
 # Dynamically add extra permissions to Group and Person models in core
 # Note: requires migrate afterwards
 Group.add_permission(
-    "view_week_class_register_group",
-    _("Can view week overview of group class register"),
+    "view_week_class_register_group", _("Can view week overview of group class register"),
 )
 Group.add_permission(
-    "view_lesson_class_register_group",
-    _("Can view lesson overview of group class register"),
-)
-Group.add_permission(
-    "view_personalnote_group", _("Can view all personal notes of a group")
-)
-Group.add_permission(
-    "edit_personalnote_group", _("Can edit all personal notes of a group")
+    "view_lesson_class_register_group", _("Can view lesson overview of group class register"),
 )
+Group.add_permission("view_personalnote_group", _("Can view all personal notes of a group"))
+Group.add_permission("edit_personalnote_group", _("Can edit all personal notes of a group"))
 Group.add_permission(
     "view_lessondocumentation_group", _("Can view all lesson documentation of a group")
 )
@@ -164,9 +148,7 @@ Group.add_permission("view_full_register_group", _("Can view full register of a
 Group.add_permission(
     "register_absence_group", _("Can register an absence for all members of a group")
 )
-Person.add_permission(
-    "register_absence_person", _("Can register an absence for a person")
-)
+Person.add_permission("register_absence_person", _("Can register an absence for a person"))
 
 
 @LessonPeriod.method
@@ -178,8 +160,7 @@ def get_lesson_documentation(
         week = self.week
     # Use all to make effect of prefetched data
     doc_filter = filter(
-        lambda d: d.week == week.week and d.year == week.year,
-        self.documentations.all(),
+        lambda d: d.week == week.week and d.year == week.year, self.documentations.all(),
     )
     try:
         return next(doc_filter)
@@ -217,9 +198,7 @@ def get_excused_absences(self, week: Optional[CalendarWeek] = None) -> QuerySet:
     """Get all personal notes of excused absent persons for this lesson."""
     if not week:
         week = self.week
-    return self.personal_notes.filter(
-        week=week.week, year=week.year, absent=True, excused=True
-    )
+    return self.personal_notes.filter(week=week.week, year=week.year, absent=True, excused=True)
 
 
 @LessonPeriod.method
@@ -227,9 +206,7 @@ def get_unexcused_absences(self, week: Optional[CalendarWeek] = None) -> QuerySe
     """Get all personal notes of unexcused absent persons for this lesson."""
     if not week:
         week = self.week
-    return self.personal_notes.filter(
-        week=week.week, year=week.year, absent=True, excused=False
-    )
+    return self.personal_notes.filter(week=week.week, year=week.year, absent=True, excused=False)
 
 
 @LessonPeriod.method
@@ -241,18 +218,14 @@ def get_tardinesses(self, week: Optional[CalendarWeek] = None) -> QuerySet:
 
 
 @LessonPeriod.method
-def get_extra_marks(
-    self, week: Optional[CalendarWeek] = None
-) -> Dict[ExtraMark, QuerySet]:
+def get_extra_marks(self, week: Optional[CalendarWeek] = None) -> Dict[ExtraMark, QuerySet]:
     """Get all statistics on extra marks for this lesson."""
     if not week:
         week = self.week
 
     stats = {}
     for extra_mark in ExtraMark.objects.all():
-        qs = self.personal_notes.filter(
-            week=week.week, year=week.year, extra_marks=extra_mark
-        )
+        qs = self.personal_notes.filter(week=week.week, year=week.year, extra_marks=extra_mark)
         if qs:
             stats[extra_mark] = qs
 
@@ -268,9 +241,7 @@ def get_groups_with_lessons(cls: Group):
         .filter(lessons_count__gt=0)
         .values_list("pk", flat=True)
     )
-    groups = cls.objects.filter(
-        Q(child_groups__pk__in=group_pks) | Q(pk__in=group_pks)
-    ).distinct()
+    groups = cls.objects.filter(Q(child_groups__pk__in=group_pks) | Q(pk__in=group_pks)).distinct()
 
     return groups
 
@@ -340,9 +311,7 @@ def generate_person_list_with_class_register_statistics(
         tardiness_count=Count(
             "personal_notes",
             filter=~Q(personal_notes__late=0)
-            & Q(
-                personal_notes__lesson_period__lesson__validity__school_term=self.school_term,
-            )
+            & Q(personal_notes__lesson_period__lesson__validity__school_term=self.school_term,)
             & (
                 Q(personal_notes__lesson_period__lesson__groups=self)
                 | Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
@@ -361,9 +330,7 @@ def generate_person_list_with_class_register_statistics(
                     )
                     & (
                         Q(personal_notes__lesson_period__lesson__groups=self)
-                        | Q(
-                            personal_notes__lesson_period__lesson__groups__parent_groups=self
-                        )
+                        | Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
                     ),
                 )
             }
@@ -381,9 +348,7 @@ def generate_person_list_with_class_register_statistics(
                     )
                     & (
                         Q(personal_notes__lesson_period__lesson__groups=self)
-                        | Q(
-                            personal_notes__lesson_period__lesson__groups__parent_groups=self
-                        )
+                        | Q(personal_notes__lesson_period__lesson__groups__parent_groups=self)
                     ),
                 )
             }
diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py
index e64bac1af..0129ee4bc 100644
--- a/aleksis/apps/alsijil/models.py
+++ b/aleksis/apps/alsijil/models.py
@@ -22,9 +22,7 @@ class ExcuseType(ExtensibleModel):
     Can be used to count different types of absences separately.
     """
 
-    short_name = models.CharField(
-        max_length=255, unique=True, verbose_name=_("Short name")
-    )
+    short_name = models.CharField(max_length=255, unique=True, verbose_name=_("Short name"))
     name = models.CharField(max_length=255, unique=True, verbose_name=_("Name"))
 
     def __str__(self):
@@ -49,9 +47,7 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
 
     objects = PersonalNoteManager()
 
-    person = models.ForeignKey(
-        "core.Person", models.CASCADE, related_name="personal_notes"
-    )
+    person = models.ForeignKey("core.Person", models.CASCADE, related_name="personal_notes")
     groups_of_person = models.ManyToManyField("core.Group", related_name="+")
 
     week = models.IntegerField()
@@ -65,11 +61,7 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
     late = models.IntegerField(default=0)
     excused = models.BooleanField(default=False)
     excuse_type = models.ForeignKey(
-        ExcuseType,
-        on_delete=models.SET_NULL,
-        null=True,
-        blank=True,
-        verbose_name=_("Excuse type"),
+        ExcuseType, on_delete=models.SET_NULL, null=True, blank=True, verbose_name=_("Excuse type"),
     )
 
     remarks = models.CharField(max_length=200, blank=True)
@@ -134,9 +126,7 @@ class LessonDocumentation(ExtensibleModel, WeekRelatedMixin):
 
     topic = models.CharField(verbose_name=_("Lesson topic"), max_length=200, blank=True)
     homework = models.CharField(verbose_name=_("Homework"), max_length=200, blank=True)
-    group_note = models.CharField(
-        verbose_name=_("Group note"), max_length=200, blank=True
-    )
+    group_note = models.CharField(verbose_name=_("Group note"), max_length=200, blank=True)
 
     def _carry_over_data(self):
         """Carry over data to directly adjacent periods in this lesson if data is not already set.
@@ -195,9 +185,7 @@ class ExtraMark(ExtensibleModel):
     Can be used for lesson-based counting of things (like forgotten homework).
     """
 
-    short_name = models.CharField(
-        max_length=255, unique=True, verbose_name=_("Short name")
-    )
+    short_name = models.CharField(max_length=255, unique=True, verbose_name=_("Short name"))
     name = models.CharField(max_length=255, unique=True, verbose_name=_("Name"))
 
     def __str__(self):
diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index be597c9e5..07ed2153a 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -43,9 +43,7 @@ class CarryOverDataToNextPeriods(BooleanPreference):
         "Carry over data from first lesson period to the "
         "following lesson periods in lessons over multiple periods"
     )
-    help_text = _(
-        "This will carry over data only if the data in the following periods are empty."
-    )
+    help_text = _("This will carry over data only if the data in the following periods are empty.")
 
 
 @site_preferences_registry.register
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 126ceea41..f553c2773 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -59,10 +59,7 @@ add_perm("alsijil.edit_lesson_personalnote", edit_lesson_personal_note_predicate
 
 # View personal note
 view_personal_note_predicate = has_person & (
-    (
-        is_own_personal_note
-        & is_site_preference_set("alsijil", "view_own_personal_notes")
-    )
+    (is_own_personal_note & is_site_preference_set("alsijil", "view_own_personal_notes"))
     | is_personal_note_lesson_teacher
     | is_personal_note_lesson_parent_group_owner
     | has_global_perm("alsijil.view_personalnote")
@@ -167,31 +164,23 @@ view_person_overview_personal_notes_predicate = view_person_overview_predicate &
     | has_person_group_object_perm("core.view_personalnote_group")
 )
 add_perm(
-    "alsijil.view_person_overview_personalnote",
-    view_person_overview_personal_notes_predicate,
+    "alsijil.view_person_overview_personalnote", view_person_overview_personal_notes_predicate,
 )
 
 # Edit person overview personal notes
-edit_person_overview_personal_notes_predicate = (
-    view_person_overview_personal_notes_predicate
-    & (
-        ~is_current_person
-        | has_global_perm("alsijil.edit_personalnote")
-        | has_person_group_object_perm("core.edit_personalnote_group")
-    )
+edit_person_overview_personal_notes_predicate = view_person_overview_personal_notes_predicate & (
+    ~is_current_person
+    | has_global_perm("alsijil.edit_personalnote")
+    | has_person_group_object_perm("core.edit_personalnote_group")
 )
 add_perm(
-    "alsijil.edit_person_overview_personalnote",
-    edit_person_overview_personal_notes_predicate,
+    "alsijil.edit_person_overview_personalnote", edit_person_overview_personal_notes_predicate,
 )
 
 # View person statistics on personal notes
-view_person_statistics_personal_notes_predicate = (
-    view_person_overview_personal_notes_predicate
-)
+view_person_statistics_personal_notes_predicate = view_person_overview_personal_notes_predicate
 add_perm(
-    "alsijil.view_person_statistics_personalnote",
-    view_person_statistics_personal_notes_predicate,
+    "alsijil.view_person_statistics_personalnote", view_person_statistics_personal_notes_predicate,
 )
 
 # View excuse type list
@@ -199,9 +188,7 @@ view_excusetypes_predicate = has_person & has_global_perm("alsijil.view_excusety
 add_perm("alsijil.view_excusetypes", view_excusetypes_predicate)
 
 # Add excuse type
-add_excusetype_predicate = view_excusetypes_predicate & has_global_perm(
-    "alsijil.add_excusetype"
-)
+add_excusetype_predicate = view_excusetypes_predicate & has_global_perm("alsijil.add_excusetype")
 add_perm("alsijil.add_excusetype", add_excusetype_predicate)
 
 # Edit excuse type
@@ -221,19 +208,13 @@ view_extramarks_predicate = has_person & has_global_perm("alsijil.view_extramark
 add_perm("alsijil.view_extramarks", view_extramarks_predicate)
 
 # Add extra mark
-add_extramark_predicate = view_extramarks_predicate & has_global_perm(
-    "alsijil.add_extramark"
-)
+add_extramark_predicate = view_extramarks_predicate & has_global_perm("alsijil.add_extramark")
 add_perm("alsijil.add_extramark", add_extramark_predicate)
 
 # Edit extra mark
-edit_extramark_predicate = view_extramarks_predicate & has_global_perm(
-    "alsijil.change_extramark"
-)
+edit_extramark_predicate = view_extramarks_predicate & has_global_perm("alsijil.change_extramark")
 add_perm("alsijil.edit_extramark", edit_extramark_predicate)
 
 # Delete extra mark
-delete_extramark_predicate = view_extramarks_predicate & has_global_perm(
-    "alsijil.delete_extramark"
-)
+delete_extramark_predicate = view_extramarks_predicate & has_global_perm("alsijil.delete_extramark")
 add_perm("alsijil.delete_extramark", delete_extramark_predicate)
diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py
index 38f7a41a3..673154f49 100644
--- a/aleksis/apps/alsijil/urls.py
+++ b/aleksis/apps/alsijil/urls.py
@@ -13,19 +13,13 @@ urlpatterns = [
     path("week/<int:year>/<int:week>/", views.week_view, name="week_view_by_week"),
     path("week/year/cw/", views.week_view, name="week_view_placeholders"),
     path("week/<str:type_>/<int:id_>/", views.week_view, name="week_view"),
-    path(
-        "week/year/cw/<str:type_>/<int:id_>/",
-        views.week_view,
-        name="week_view_placeholders",
-    ),
+    path("week/year/cw/<str:type_>/<int:id_>/", views.week_view, name="week_view_placeholders",),
     path(
         "week/<int:year>/<int:week>/<str:type_>/<int:id_>/",
         views.week_view,
         name="week_view_by_week",
     ),
-    path(
-        "print/group/<int:id_>", views.full_register_group, name="full_register_group"
-    ),
+    path("print/group/<int:id_>", views.full_register_group, name="full_register_group"),
     path("groups/", views.my_groups, name="my_groups"),
     path("groups/<int:pk>/", views.StudentsList.as_view(), name="students_list"),
     path("persons/", views.my_students, name="my_students"),
@@ -38,31 +32,17 @@ urlpatterns = [
     ),
     path("absence/new/<int:id_>/", views.register_absence, name="register_absence"),
     path("extra_marks/", views.ExtraMarkListView.as_view(), name="extra_marks"),
-    path(
-        "extra_marks/create/",
-        views.ExtraMarkCreateView.as_view(),
-        name="create_extra_mark",
-    ),
-    path(
-        "extra_marks/<int:pk>/edit/",
-        views.ExtraMarkEditView.as_view(),
-        name="edit_extra_mark",
-    ),
+    path("extra_marks/create/", views.ExtraMarkCreateView.as_view(), name="create_extra_mark",),
+    path("extra_marks/<int:pk>/edit/", views.ExtraMarkEditView.as_view(), name="edit_extra_mark",),
     path(
         "extra_marks/<int:pk>/delete/",
         views.ExtraMarkDeleteView.as_view(),
         name="delete_extra_mark",
     ),
     path("excuse_types/", views.ExcuseTypeListView.as_view(), name="excuse_types"),
+    path("excuse_types/create/", views.ExcuseTypeCreateView.as_view(), name="create_excuse_type",),
     path(
-        "excuse_types/create/",
-        views.ExcuseTypeCreateView.as_view(),
-        name="create_excuse_type",
-    ),
-    path(
-        "excuse_types/<int:pk>/edit/",
-        views.ExcuseTypeEditView.as_view(),
-        name="edit_excuse_type",
+        "excuse_types/<int:pk>/edit/", views.ExcuseTypeEditView.as_view(), name="edit_excuse_type",
     ),
     path(
         "excuse_types/<int:pk>/delete/",
diff --git a/aleksis/apps/alsijil/util/alsijil_helpers.py b/aleksis/apps/alsijil/util/alsijil_helpers.py
index 10bf5b4e7..432afb18f 100644
--- a/aleksis/apps/alsijil/util/alsijil_helpers.py
+++ b/aleksis/apps/alsijil/util/alsijil_helpers.py
@@ -17,21 +17,15 @@ def get_lesson_period_by_pk(
     """Get LessonPeriod object either by given object_id or by time and current person."""
     wanted_week = CalendarWeek(year=year, week=week)
     if period_id:
-        lesson_period = LessonPeriod.objects.annotate_week(wanted_week).get(
-            pk=period_id
-        )
+        lesson_period = LessonPeriod.objects.annotate_week(wanted_week).get(pk=period_id)
     elif hasattr(request, "user") and hasattr(request.user, "person"):
         if request.user.person.lessons_as_teacher.exists():
             lesson_period = (
-                LessonPeriod.objects.at_time()
-                .filter_teacher(request.user.person)
-                .first()
+                LessonPeriod.objects.at_time().filter_teacher(request.user.person).first()
             )
         else:
             lesson_period = (
-                LessonPeriod.objects.at_time()
-                .filter_participant(request.user.person)
-                .first()
+                LessonPeriod.objects.at_time().filter_participant(request.user.person).first()
             )
     else:
         lesson_period = None
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index c07c85ed1..59a754d9b 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -57,10 +57,7 @@ def lesson(
     if not all((year, week, period_id)):
         if lesson_period:
             return redirect(
-                "lesson_by_week_and_period",
-                wanted_week.year,
-                wanted_week.week,
-                lesson_period.pk,
+                "lesson_by_week_and_period", wanted_week.year, wanted_week.week, lesson_period.pk,
             )
         else:
             raise Http404(
@@ -90,9 +87,7 @@ def lesson(
         and not request.user.is_superuser
     ):
         raise PermissionDenied(
-            _(
-                "You are not allowed to create a lesson documentation for a lesson in the future."
-            )
+            _("You are not allowed to create a lesson documentation for a lesson in the future.")
         )
 
     next_lesson = request.user.person.next_lesson(lesson_period, date_of_lesson)
@@ -107,9 +102,7 @@ def lesson(
     # Create or get lesson documentation object; can be empty when first opening lesson
     lesson_documentation = lesson_period.get_or_create_lesson_documentation(wanted_week)
     lesson_documentation_form = LessonDocumentationForm(
-        request.POST or None,
-        instance=lesson_documentation,
-        prefix="lesson_documentation",
+        request.POST or None, instance=lesson_documentation, prefix="lesson_documentation",
     )
 
     # Create a formset that holds all personal notes for all persons in this lesson
@@ -274,9 +267,7 @@ def week_view(
         elif group:
             persons_qs = persons_qs.filter(member_of=group)
         else:
-            persons_qs = persons_qs.filter(
-                member_of__lessons__lesson_periods__in=lesson_periods_pk
-            )
+            persons_qs = persons_qs.filter(member_of__lessons__lesson_periods__in=lesson_periods_pk)
 
         persons_qs = (
             persons_qs.distinct()
@@ -355,9 +346,7 @@ def week_view(
 
         persons = []
         for person in persons_qs:
-            persons.append(
-                {"person": person, "personal_notes": list(person.personal_notes.all())}
-            )
+            persons.append({"person": person, "personal_notes": list(person.personal_notes.all())})
     else:
         persons = None
 
@@ -391,9 +380,7 @@ def week_view(
     return render(request, "alsijil/class_register/week_view.html", context)
 
 
-@permission_required(
-    "alsijil.view_full_register", fn=objectgetter_optional(Group, None, False)
-)
+@permission_required("alsijil.view_full_register", fn=objectgetter_optional(Group, None, False))
 def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     context = {}
 
@@ -413,9 +400,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
         )
     )
 
-    weeks = CalendarWeek.weeks_within(
-        group.school_term.date_start, group.school_term.date_end,
-    )
+    weeks = CalendarWeek.weeks_within(group.school_term.date_start, group.school_term.date_end,)
 
     periods_by_day = {}
     for lesson_period in lesson_periods:
@@ -522,23 +507,20 @@ class StudentsList(PermissionRequiredMixin, DetailView):
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
         context["group"] = self.object
-        context[
-            "persons"
-        ] = self.object.generate_person_list_with_class_register_statistics()
+        context["persons"] = self.object.generate_person_list_with_class_register_statistics()
         context["extra_marks"] = ExtraMark.objects.all()
         context["excuse_types"] = ExcuseType.objects.all()
         return context
 
 
 @permission_required(
-    "alsijil.view_person_overview",
-    fn=objectgetter_optional(Person, "request.user.person", True),
+    "alsijil.view_person_overview", fn=objectgetter_optional(Person, "request.user.person", True),
 )
 def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResponse:
     context = {}
-    person = objectgetter_optional(
-        Person, default="request.user.person", default_eval=True
-    )(request, id_)
+    person = objectgetter_optional(Person, default="request.user.person", default_eval=True)(
+        request, id_
+    )
     context["person"] = person
 
     if request.method == "POST":
@@ -560,9 +542,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                 if request.POST.get("date"):
                     # Mark absences on date as excused
                     try:
-                        date = datetime.strptime(
-                            request.POST["date"], "%Y-%m-%d"
-                        ).date()
+                        date = datetime.strptime(request.POST["date"], "%Y-%m-%d").date()
 
                         if not request.user.has_perm(
                             "alsijil.edit_person_overview_personalnote", person
@@ -583,17 +563,13 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                             with reversion.create_revision():
                                 note.save()
 
-                        messages.success(
-                            request, _("The absences have been marked as excused.")
-                        )
+                        messages.success(request, _("The absences have been marked as excused."))
                     except ValueError:
                         pass
                 elif request.POST.get("personal_note"):
                     # Mark specific absence as excused
                     try:
-                        note = PersonalNote.objects.get(
-                            pk=int(request.POST["personal_note"])
-                        )
+                        note = PersonalNote.objects.get(pk=int(request.POST["personal_note"]))
                         if not request.user.has_perm("alsijil.edit_personalnote", note):
                             raise PermissionDenied()
                         if note.absent:
@@ -601,9 +577,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                             note.excuse_type = excuse_type
                             with reversion.create_revision():
                                 note.save()
-                            messages.success(
-                                request, _("The absence has been marked as excused.")
-                            )
+                            messages.success(request, _("The absence has been marked as excused."))
                     except (PersonalNote.DoesNotExist, ValueError):
                         pass
 
@@ -651,9 +625,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                 continue
 
             stat.update(
-                personal_notes.filter(absent=True).aggregate(
-                    absences_count=Count("absent")
-                )
+                personal_notes.filter(absent=True).aggregate(absences_count=Count("absent"))
             )
             stat.update(
                 personal_notes.filter(
@@ -666,11 +638,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
                 )
             )
             stat.update(personal_notes.aggregate(tardiness=Sum("late")))
-            stat.update(
-                personal_notes.filter(~Q(late=0)).aggregate(
-                    tardiness_count=Count("late")
-                )
-            )
+            stat.update(personal_notes.filter(~Q(late=0)).aggregate(tardiness_count=Count("late")))
 
             for extra_mark in extra_marks:
                 stat.update(
@@ -681,9 +649,9 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
 
             for excuse_type in excuse_types:
                 stat.update(
-                    personal_notes.filter(
-                        absent=True, excuse_type=excuse_type
-                    ).aggregate(**{excuse_type.count_label: Count("absent")})
+                    personal_notes.filter(absent=True, excuse_type=excuse_type).aggregate(
+                        **{excuse_type.count_label: Count("absent")}
+                    )
                 )
 
             stats.append((school_term, stat))
@@ -723,13 +691,7 @@ def register_absence(request: HttpRequest, id_: int) -> HttpResponse:
             day = start_date + timedelta(days=i)
 
             person.mark_absent(
-                day,
-                from_period_on_day,
-                absent,
-                excused,
-                excuse_type,
-                remarks,
-                to_period_on_day,
+                day, from_period_on_day, absent, excused, excuse_type, remarks, to_period_on_day,
             )
 
         messages.success(request, _("The absence has been saved."))
-- 
GitLab