From d93ad8044a1a51597874ed0b2b110be1a09d184b Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 13 Oct 2017 15:56:40 +0200 Subject: [PATCH] Add method User.get_events_with_permission --- src/pretix/base/models/auth.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index 3dab670f1b..9ef68596c3 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -251,6 +251,24 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): | Q(id__in=self.teams.values_list('limit_events__id', flat=True)) ) + def get_events_with_permission(self, permission): + """ + Returns a queryset of events the user has a specific permissions to. + + :return: Iterable of Events + """ + from .event import Event + + if self.is_superuser: + return Event.objects.all() + + kwargs = {permission: True} + + return Event.objects.filter( + Q(organizer_id__in=self.teams.filter(all_events=True, **kwargs).values_list('organizer', flat=True)) + | Q(id__in=self.teams.filter(**kwargs).values_list('limit_events__id', flat=True)) + ) + class U2FDevice(Device): json_data = models.TextField()