From a4b9dfea25f939598d540813889c779bd0e19ce6 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Mon, 27 Jan 2025 20:33:52 +0100
Subject: [PATCH] Improve statistics builder

---
 aleksis/apps/alsijil/tasks.py           | 8 +++-----
 aleksis/apps/alsijil/util/statistics.py | 6 +++---
 2 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py
index 7216716a..f7aa866d 100644
--- a/aleksis/apps/alsijil/tasks.py
+++ b/aleksis/apps/alsijil/tasks.py
@@ -163,11 +163,9 @@ def generate_person_register_printout(
     doc_query_set = Documentation.objects.select_related("subject").prefetch_related("teachers")
 
     statistics = (
-        (
-            StatisticsBuilder(Person.objects.filter(id=person.id))
-            .use_from_school_term(school_term)
-            .annotate_statistics()
-        )
+        StatisticsBuilder(Person.objects.filter(id=person.id))
+        .use_from_school_term(school_term)
+        .annotate_statistics()
         .prefetch_relevant_participations(documentation_with_details=doc_query_set)
         .prefetch_relevant_personal_notes(documentation_with_details=doc_query_set)
         .build()
diff --git a/aleksis/apps/alsijil/util/statistics.py b/aleksis/apps/alsijil/util/statistics.py
index f9d13f84..158a3efd 100644
--- a/aleksis/apps/alsijil/util/statistics.py
+++ b/aleksis/apps/alsijil/util/statistics.py
@@ -17,7 +17,7 @@ class BuilderError(Exception):
 class StatisticsBuilder:
     """Builder class for building queries with annotated statistics on persons.
 
-    To build queries, you can combine one `use_` with multiple `annotate` or `prefetch`
+    To build queries, you can combine `use_` with multiple `annotate` or `prefetch`
     methods. At the end, call `build` to get the actual queryset.
 
     >>> StatisticsBuilder(person_qs).use_from_school_term(school_term).annotate_statistics().build()
@@ -87,7 +87,7 @@ class StatisticsBuilder:
     def _annotate_filtered_participations(self, condition: Q | None = None) -> "StatisticsBuilder":
         """Annotate a filtered relation for participations."""
         if not self.participations_filter and not condition:
-            raise BuilderError
+            raise BuilderError("Annotation of participations needs a participation filter.")
         self.qs = self.qs.annotate(
             filtered_participation_statuses=FilteredRelation(
                 "participations",
@@ -99,7 +99,7 @@ class StatisticsBuilder:
     def _annotate_filtered_personal_notes(self, condition: Q | None = None) -> "StatisticsBuilder":
         """Annotate a filtered relation for personal notes."""
         if not self.personal_notes_filter and not condition:
-            raise BuilderError
+            raise BuilderError("Annotation of personal notes needs a participation filter.")
         self.qs = self.qs.annotate(
             filtered_personal_notes=FilteredRelation(
                 "new_personal_notes",
-- 
GitLab