diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2fd8f9c940aa59a96ba5c5c49ddf8521e8ac40b5..282575f36d245ab7835f6c2e168528d401d76044 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 68833a4d5dd8814a58c3bf6cae6b1c2e2c7af701..7b5ebec01cb9e1cff9677bb74bbfdf1ee99677e4 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)