From 3fab15d0866ec7b8a38a8fbc95aa0b3723052055 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 29 Jun 2021 18:05:51 +0200 Subject: [PATCH] Team list: Rewrite search query --- src/pretix/control/forms/filter.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/pretix/control/forms/filter.py b/src/pretix/control/forms/filter.py index 87e35e5315..b7b44a05a4 100644 --- a/src/pretix/control/forms/filter.py +++ b/src/pretix/control/forms/filter.py @@ -57,7 +57,8 @@ from pretix.base.forms.widgets import ( from pretix.base.models import ( Checkin, CheckinList, Device, Event, EventMetaProperty, EventMetaValue, Gate, Invoice, InvoiceAddress, Item, Order, OrderPayment, OrderPosition, - OrderRefund, Organizer, Question, QuestionAnswer, SubEvent, + OrderRefund, Organizer, Question, QuestionAnswer, SubEvent, Team, + TeamAPIToken, TeamInvite, ) from pretix.base.signals import register_payment_providers from pretix.control.forms.widgets import Select2 @@ -1130,11 +1131,25 @@ class TeamFilterForm(FilterForm): if fdata.get('query'): query = fdata.get('query') qs = qs.filter( - Q(name__icontains=query) - | Q(members__email__icontains=query) - | Q(members__fullname__icontains=query) - | Q(invites__email__icontains=query) - | Q(tokens__name__icontains=query) + Q(Exists( + Team.members.through.objects.filter( + Q(user__email__icontains=query) | Q(user__fullname__icontains=query), + team_id=OuterRef('pk'), + ) + )) + | Q(Exists( + TeamInvite.objects.filter( + email__icontains=query, + team_id=OuterRef('pk'), + ) + )) + | Q(Exists( + TeamAPIToken.objects.filter( + name__icontains=query, + team_id=OuterRef('pk'), + ) + )) + | Q(name__icontains=query) ) if fdata.get('ordering'):