From 3517b2c0d434ebe1dfad50000638469fd6f9eb39 Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 23 Sep 2022 16:28:22 +0200 Subject: [PATCH] Fix filter for persons in register object view --- CHANGELOG.rst | 5 +++++ aleksis/apps/alsijil/views.py | 25 ++++++++++--------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2fd8f9c94..282575f36 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,7 +13,12 @@ Changed ~~~~~~~ * Use new icon set inside of models and templates + +Fixed +~~~~~ + * Extra marks and excused absences were counted multiple times in some class register views. +* Substitution teachers couldn't see any persons in the person list of a substituted lesson. `2.1.1`_ - 2022-09-01 --------------------- diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 68833a4d5..7b5ebec01 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -236,15 +236,14 @@ def register_object( if not request.user.has_perm( "alsijil.view_register_object_personalnote_rule", register_object ): - persons = Person.objects.filter(pk=request.user.person.pk) + persons = Person.objects.filter( + Q(pk=request.user.person.pk) + | Q(person__member_of__in=request.user.person.owner_of.all()) + ).distinct() else: persons = Person.objects.all() - persons_qs = ( - register_object.get_personal_notes(persons, wanted_week) - .filter(person__member_of__in=request.user.person.owner_of.all()) - .distinct() - ) + persons_qs = register_object.get_personal_notes(persons, wanted_week).distinct() # Annotate group roles if show_group_roles: @@ -798,16 +797,12 @@ def my_students(request: HttpRequest) -> HttpResponse: new_groups = [] for group in relevant_groups: - persons = ( - group.generate_person_list_with_class_register_statistics( - group.members.prefetch_related( - "primary_group__owners", - Prefetch("member_of", queryset=relevant_groups, to_attr="member_of_prefetched"), - ) + persons = group.generate_person_list_with_class_register_statistics( + group.members.prefetch_related( + "primary_group__owners", + Prefetch("member_of", queryset=relevant_groups, to_attr="member_of_prefetched"), ) - .filter(member_of__in=request.user.person.owner_of.all()) - .distinct() - ) + ).distinct() persons_for_group = [] for person in persons: person.set_object_permission_checker(checker) -- GitLab