From eae1c27b764a0d85a24b0f6c65fabc77605733fa Mon Sep 17 00:00:00 2001 From: Jonathan Weth <git@jonathanweth.de> Date: Fri, 24 Jan 2025 18:24:16 +0100 Subject: [PATCH] Calculate statistics about participations with lesson events --- aleksis/apps/alsijil/model_extensions.py | 12 +++--------- aleksis/apps/alsijil/tasks.py | 8 ++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index a3d9c14fa..e1a2bd0ef 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -2,6 +2,7 @@ from django.db.models import FilteredRelation, Q, QuerySet, Value from django.db.models.aggregates import Count, Sum from django.utils.translation import gettext as _ +from aleksis.apps.chronos.models import LessonEvent from aleksis.apps.kolego.models import AbsenceReason from aleksis.core.models import Group, Person, SchoolTerm @@ -137,13 +138,6 @@ def annotate_person_statistics_for_school_term( datetime_end__date__lte=school_term.date_end, ) if group: - documentations = documentations.filter( - pk__in=Documentation.objects.filter(course__groups=group) - .values_list("pk", flat=True) - .union( - Documentation.objects.filter(course__groups__parent_groups=group).values_list( - "pk", flat=True - ) - ) - ) + lesson_events = LessonEvent.objects.filter(LessonEvent.objects.for_group_q(group)) + documentations = documentations.filter(amends__in=lesson_events) return annotate_person_statistics_from_documentations(persons, documentations) diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py index 5c0377d74..71de0d315 100644 --- a/aleksis/apps/alsijil/tasks.py +++ b/aleksis/apps/alsijil/tasks.py @@ -7,6 +7,7 @@ from django.utils.translation import gettext as _ from celery.result import allow_join_result from celery.states import SUCCESS +from aleksis.apps.chronos.models import LessonEvent from aleksis.apps.cursus.models import Course from aleksis.apps.kolego.models.absence import AbsenceReason from aleksis.core.models import Group, PDFFile @@ -118,6 +119,13 @@ def generate_full_register_printout( course__groups__parent_groups=group ).values_list("pk", flat=True) ) + .union( + Documentation.objects.filter( + amends__in=LessonEvent.objects.filter( + LessonEvent.objects.for_group_q(group) + ) + ).values_list("pk", flat=True) + ) ) ) -- GitLab