Skip to content

Commit b317701

Browse files
authored
Merge pull request #596 from PROCOLLAB-github/dev
Dev
2 parents 51c4f8d + f0c58b2 commit b317701

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

invites/filters.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,38 @@ class InviteFilter(filters.FilterSet):
1010
Adds filtering to DRF list retrieve views
1111
1212
Parameters to filter by:
13-
project (int), user (default to request.user if not set otherwise) (int)
13+
project (int),
14+
user (default to request.user if not set otherwise) (int),
15+
user=any (disable user filter)
1416
1517
Examples:
1618
?project=1 equals to .filter(project_id=1)
1719
(no params passed) equals to .filter(user=request.user)
1820
?user=4 equals to .filter(user_id=4)
21+
?project=1&user=any equals to .filter(project_id=1)
1922
"""
2023

2124
def __init__(self, *args, **kwargs):
2225
super().__init__(*args, **kwargs)
2326
self.data = dict(self.data)
2427
request = kwargs.get("request")
2528
if request and request.user.is_authenticated:
26-
self.data["user"] = request.user.id
29+
user_value = self.data.get("user")
30+
if isinstance(user_value, list):
31+
user_value = user_value[0] if user_value else None
32+
if user_value is None:
33+
self.data["user"] = request.user.id
34+
35+
@staticmethod
36+
def filter_user(queryset, name, value):
37+
if isinstance(value, list):
38+
value = value[0] if value else None
39+
if value in (None, "", "any"):
40+
return queryset
41+
return queryset.filter(user_id=value)
2742

2843
project = filters.Filter(method=project_id_filter)
29-
user = filters.NumberFilter(field_name="user_id")
44+
user = filters.Filter(method="filter_user")
3045

3146
class Meta:
3247
model = Invite

0 commit comments

Comments
 (0)