Skip to content
Snippets Groups Projects
Commit fbf131ba authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Accept both HttpRequests and Models in helper function

parent 0b5fe448
No related branches found
No related tags found
1 merge request!318Resolve "Add helper function to filter a queryset by a rule"
Pipeline #2884 failed
......@@ -354,13 +354,18 @@ def handle_uploaded_file(f, filename: str):
@cache_memoize(3600)
def queryset_rules_filter(request: HttpRequest, queryset: QuerySet, perm: str) -> QuerySet:
def queryset_rules_filter(obj: Union[HttpRequest, Model], queryset: QuerySet, perm: str) -> QuerySet:
"""Filter queryset by user and permission."""
wanted_objects = set()
if hasattr(request, "user"):
for obj in queryset:
if request.user.has_perm(perm, obj):
wanted_objects.add(obj.pk)
if isinstance(obj, HttpRequest):
if hasattr(obj, "user"):
for item in queryset:
if obj.user.has_perm(perm, item):
wanted_objects.add(item.pk)
else:
for item in queryset:
if obj.has_perm(perm, item):
wanted_objects.add(item.pk)
return queryset.filter(pk__in = wanted_objects)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment