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