diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue index e4be1ec19f62dd3d9537e1ab4b0cc532b86c5696..4d9611c248a950e9731aff941aae1cbcd9b6c1a8 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForGroupTab.vue @@ -10,7 +10,6 @@ :show-select="false" @items="items = $event" > - <!-- <template #header.person="header">--> <!-- Hello world--> <!-- {{ header }}--> @@ -83,7 +82,7 @@ import AbsenceReasonChip from "aleksis.apps.kolego/components/AbsenceReasonChip. import ExtraMarkChip from "aleksis.apps.alsijil/components/extra_marks/ExtraMarkChip.vue"; import { statisticsByGroup } from "./statistics.graphql"; -import { absenceReasons } from "aleksis.apps.kolego/components/absenceReasons.graphql"; +import { absenceReasons } from "../absences/absenceReasons.graphql"; import { extraMarks } from "../../extra_marks/extra_marks.graphql"; export default { diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py index 14b1353214ef3209d6772b1384abf195dabd640a..33b3a15009a61146fe88ec62f6114ee55efd277b 100644 --- a/aleksis/apps/alsijil/model_extensions.py +++ b/aleksis/apps/alsijil/model_extensions.py @@ -520,12 +520,12 @@ def annotate_person_statistics( filter=Q(filtered_participation_statuses__absence_reason__count_as_absent=True), distinct=True, ), - # tardiness=Sum("filtered_participation_statuses__tardiness"), - # tardiness_count=Count( - # "filtered_personal_notes", - # filter=Q(filtered_personal_notes__tardiness__gt=0), - # distinct=True, - # ), + tardiness_sum=Sum("filtered_participation_statuses__tardiness"), + tardiness_count=Count( + "filtered_participation_statuses", + filter=Q(filtered_participation_statuses__tardiness__gt=0), + distinct=True, + ), ) persons = persons.order_by("last_name", "first_name") @@ -557,16 +557,16 @@ def annotate_person_statistics( def annotate_person_statistics_for_school_term( - persons: QuerySet[Person], school_term: SchoolTerm + persons: QuerySet[Person], school_term: SchoolTerm, group: Group | None = None ) -> QuerySet[Person]: """Annotate a queryset of persons with class register statistics for a school term.""" documentations = Documentation.objects.filter( - participations__person__in=persons, datetime_start__date__gte=school_term.date_start, datetime_end__date__lte=school_term.date_end, ) + if group: + documentations.filter(Q(course__groups=group) | Q(course__groups__parent_groups=group)) docs = list(documentations.values_list("pk", flat=True)) - return annotate_person_statistics( persons, Q(participations__related_documentation__in=docs), diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py index b8fe2fcc362be7c46c965e4ac783dca3317d7efe..9e6ec22b596c7e1bf63d8b2b2c930f0856b622d0 100644 --- a/aleksis/apps/alsijil/schema/__init__.py +++ b/aleksis/apps/alsijil/schema/__init__.py @@ -272,7 +272,7 @@ class Query(graphene.ObjectType): ) members = Group.objects.get(id=group).members.all() - return annotate_person_statistics_for_school_term(members, school_term) + return annotate_person_statistics_for_school_term(members, school_term, group=group) class Mutation(graphene.ObjectType): diff --git a/aleksis/apps/alsijil/schema/statistics.py b/aleksis/apps/alsijil/schema/statistics.py index 2788fcfebb9f7a863d8809bfc3b2694bde751f18..a6292433accad63081fed3d49e2e944071ec09cb 100644 --- a/aleksis/apps/alsijil/schema/statistics.py +++ b/aleksis/apps/alsijil/schema/statistics.py @@ -49,14 +49,14 @@ class StatisticsByPersonType(graphene.ObjectType): def resolve_absence_reasons(root, info): return [ dict(absence_reason=reason, count=getattr(root, reason.count_label)) - for reason in AbsenceReason.objects.all() + for reason in AbsenceReason.objects.filter(tags__short_name="class_register") ] def resolve_tardiness_sum(root, info): - return 17 + return root.tardiness_sum def resolve_tardiness_count(root, info): - return 5 + return root.tardiness_count def resolve_extra_marks(root, info): return [