diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py index 4660a45eeb5a8b695d57806153045ae6d47c2839..19f65699eacf970204d9920665b0fccd50493f49 100644 --- a/aleksis/apps/alsijil/tasks.py +++ b/aleksis/apps/alsijil/tasks.py @@ -173,15 +173,29 @@ def generate_full_register_printout( if include_members_table or include_person_overviews: group = group.prefetch_related("members") - if include_person_overviews: + if include_teachers_and_subjects_table: group = group.prefetch_related( + Prefetch("courses", queryset=Course.objects.select_related("subject")), + "courses__teachers", + "child_groups", + Prefetch("child_groups__courses", queryset=Course.objects.select_related("subject")), + "child_groups__courses__teachers", + ) + + group = group[0] + context["group"] = group + + if include_members_table or include_person_overviews: + context["members"] = annotate_person_statistics_for_school_term(group.members.all(), group.school_term, group) + + if include_person_overviews: + context["members"] = context["members"].prefetch_related( Prefetch( - "members__participations", + "participations", queryset=ParticipationStatus.objects - .filter( - # TODO: Not shure this filter works here as intended = test - Q(absence_reason__isnull=False) - | Q(tardiness__isnull=False) + .exclude( + Q(absence_reason__isnull=True) + | Q(tardiness__isnull=True) ) .select_related("absence_reason") .prefetch_related( @@ -189,11 +203,16 @@ def generate_full_register_printout( "related_documentation", queryset=Documentation.objects.select_related("subject").prefetch_related("teachers"), ), - ) + ), + to_attr="notable_participations", ), Prefetch( - "members__new_personal_notes", - queryset=NewPersonalNote.objects.prefetch_related( + "new_personal_notes", + queryset=NewPersonalNote.objects + .exclude( + Q(note="") + | Q(extra_marks=None)) + .prefetch_related( Prefetch( "documentation", queryset=Documentation.objects.select_related("subject").prefetch_related("teachers"), @@ -203,21 +222,6 @@ def generate_full_register_printout( ), ) - if include_teachers_and_subjects_table: - group = group.prefetch_related( - Prefetch("courses", queryset=Course.objects.select_related("subject")), - "courses__teachers", - "child_groups", - Prefetch("child_groups__courses", queryset=Course.objects.select_related("subject")), - "child_groups__courses__teachers", - ) - - group = group[0] - context["group"] = group - - if include_members_table or include_person_overviews: - context["members"] = annotate_person_statistics_for_school_term(group.members.all(), group.school_term, group) - # OLD context["school_term"] = group.school_term diff --git a/aleksis/apps/alsijil/templates/alsijil/partials/person_overview.html b/aleksis/apps/alsijil/templates/alsijil/partials/person_overview.html index 4aa503d44d1e838836498face71342b17234fb4b..b198a1b2abc69664a88f2ac7fb6deb7bf32c64b3 100644 --- a/aleksis/apps/alsijil/templates/alsijil/partials/person_overview.html +++ b/aleksis/apps/alsijil/templates/alsijil/partials/person_overview.html @@ -92,7 +92,7 @@ </thead> <tbody> - {% for participation in person.participations %} + {% for participation in person.notable_participations %} <tr> <td>{{ participation.documentation.datetime_start.date }}</td> <td> @@ -120,18 +120,16 @@ <tbody> {% for note in person.new_personal_notes %} - {% if note.note or note.extra_marks.all %} - <tr> - <td>{{ note.documentation.datetime_start.date }}</td> - <td> - {{ note.documentation.subject.short_name }} - </td> - <!-- TODO: Should probably use short_names --> - <td>{{ note.documentation.teachers.all|join:', ' }}</td> - <td>{{ note.extra_mark.short_name }}</td> - <td>{{ note.note }}</td> - </tr> - {% endif %} + <tr> + <td>{{ note.documentation.datetime_start.date }}</td> + <td> + {{ note.documentation.subject.short_name }} + </td> + <!-- TODO: Should probably use short_names --> + <td>{{ note.documentation.teachers.all|join:', ' }}</td> + <td>{{ note.extra_mark.short_name }}</td> + <td>{{ note.note }}</td> + </tr> {% endfor %} </tbody> </table>