From 1f6926fcc3e6b14295896d1a7051345439dc7d4e Mon Sep 17 00:00:00 2001 From: Toksi Date: Tue, 20 Jan 2026 11:08:31 +0500 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20=D0=B8=D0=BD=D0=B2=D0=B0=D0=B9=D1=82=D0=BE?= =?UTF-8?q?=D0=B2:=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D1=83=D1=87?= =?UTF-8?q?=D0=B8=D1=82=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20user?= =?UTF-8?q?=3Dany=20=D0=B8=20=D0=BD=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F=20user=20=D0=BF=D0=BE=20=D1=83=D0=BC=D0=BE=D0=BB=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- invites/filters.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/invites/filters.py b/invites/filters.py index a98f2078..635a3cf2 100644 --- a/invites/filters.py +++ b/invites/filters.py @@ -10,12 +10,15 @@ class InviteFilter(filters.FilterSet): Adds filtering to DRF list retrieve views Parameters to filter by: - project (int), user (default to request.user if not set otherwise) (int) + project (int), + user (default to request.user if not set otherwise) (int), + user=any (disable user filter) Examples: ?project=1 equals to .filter(project_id=1) (no params passed) equals to .filter(user=request.user) ?user=4 equals to .filter(user_id=4) + ?project=1&user=any equals to .filter(project_id=1) """ def __init__(self, *args, **kwargs): @@ -23,10 +26,22 @@ def __init__(self, *args, **kwargs): self.data = dict(self.data) request = kwargs.get("request") if request and request.user.is_authenticated: - self.data["user"] = request.user.id + user_value = self.data.get("user") + if isinstance(user_value, list): + user_value = user_value[0] if user_value else None + if user_value is None: + self.data["user"] = request.user.id + + @staticmethod + def filter_user(queryset, name, value): + if isinstance(value, list): + value = value[0] if value else None + if value in (None, "", "any"): + return queryset + return queryset.filter(user_id=value) project = filters.Filter(method=project_id_filter) - user = filters.NumberFilter(field_name="user_id") + user = filters.Filter(method="filter_user") class Meta: model = Invite