From b891d0495e00f3cec2abaaae4815e67833e094bb Mon Sep 17 00:00:00 2001 From: mhewel <58829786+mhewel@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:23:15 +0200 Subject: [PATCH] Admin > Invtationer: Sortering af Alder, PostNummer og Deltager kolonnerne --- members/admin/activityinvite_admin.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/members/admin/activityinvite_admin.py b/members/admin/activityinvite_admin.py index 251c576b..261f6e18 100644 --- a/members/admin/activityinvite_admin.py +++ b/members/admin/activityinvite_admin.py @@ -7,10 +7,12 @@ from django.utils import timezone from django.utils.safestring import mark_safe from django.utils.html import escape +from django.db.models import Exists, OuterRef from members.models import ( Activity, ActivityInvite, + ActivityParticipant, AdminUserInformation, Department, Person, @@ -165,7 +167,15 @@ class Meta: # Only show invitation to own activities def get_queryset(self, request): - qs = super(ActivityInviteAdmin, self).get_queryset(request) + queryset = super().get_queryset(request) + qs = queryset.annotate( + is_participating=Exists( + ActivityParticipant.objects.filter( + person=OuterRef("person"), activity=OuterRef("activity") + ) + ) + ) + if request.user.is_superuser or request.user.has_perm( "members.view_all_departments" ): @@ -211,11 +221,13 @@ def person_age_years(self, item): return item.person.age_years() person_age_years.short_description = "Alder" + person_age_years.admin_order_field = "person__birthday" def person_zipcode(self, item): return item.person.zipcode person_zipcode.short_description = "Postnummer" + person_zipcode.admin_order_field = "person__zipcode" def activity_department_union_link(self, item): url = reverse( @@ -259,12 +271,11 @@ def person_link(self, item): person_link.admin_order_field = "person__name" def participating(self, item): - return item.person.activityparticipant_set.filter( - activity=item.activity - ).exists() + return item.is_participating participating.short_description = "Deltager" participating.boolean = True + participating.admin_order_field = "is_participating" def export_csv_invitation_info(self, request, queryset): result_string = """"Forening"; "Afdeling"; "Aktivitet"; "Deltager";\