From 703fdd628dec9ad0431667712eb9a7d5b7f0947a Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Mon, 29 Aug 2022 11:56:18 +0200 Subject: [PATCH] Add distinct to group-based statistic views --- CHANGELOG.rst | 1 + aleksis/apps/alsijil/model_extensions.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a79287ec7..556b6f5b2 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,6 +13,7 @@ Fixed ~~~~~ * Students were displayed multiple times in class register views. +* Absences were counted multiple times in some class register views. `2.1`_ - 2022-06-25 ------------------- diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 5b0e5ac4b..b53f87f99 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -434,6 +434,7 @@ def generate_person_list_with_class_register_statistics( "filtered_personal_notes", filter=Q(filtered_personal_notes__absent=True) & ~Q(filtered_personal_notes__excuse_type__count_as_absent=False), + distinct=True, ), excused=Count( "filtered_personal_notes", @@ -442,6 +443,7 @@ def generate_person_list_with_class_register_statistics( filtered_personal_notes__excused=True, ) & ~Q(filtered_personal_notes__excuse_type__count_as_absent=False), + distinct=True, ), excused_without_excuse_type=Count( "filtered_personal_notes", @@ -450,15 +452,16 @@ def generate_person_list_with_class_register_statistics( filtered_personal_notes__excused=True, filtered_personal_notes__excuse_type__isnull=True, ), + distinct=True, ), unexcused=Count( "filtered_personal_notes", filter=Q(filtered_personal_notes__absent=True, filtered_personal_notes__excused=False), + distinct=True, ), tardiness=Sum("filtered_personal_notes__late"), tardiness_count=Count( - "filtered_personal_notes", - filter=Q(filtered_personal_notes__late__gt=0), + "filtered_personal_notes", filter=Q(filtered_personal_notes__late__gt=0), distinct=True ), ) -- GitLab