Skip to content
Snippets Groups Projects
Verified Commit b8e10415 authored by Hangzhi Yu's avatar Hangzhi Yu Committed by Jonathan Weth
Browse files

Comment has_any_object function

(cherry picked from commit 2894a951)
parent 1c94bd37
No related branches found
No related tags found
1 merge request!697Prepare release 2.0rc4
......@@ -75,14 +75,19 @@ def has_any_object(perm: str, klass):
Build predicate which checks whether a user has access
to objects with the provided permission or rule.
Differentiates between object-related permissions and rules.
"""
name = f"has_any_object:{perm}"
@predicate(name)
def fn(user: User) -> bool:
ct_perm = get_content_type_by_perm(perm)
# In case a object-related permission with the same ContentType class as the given class
# is passed, the optimized django-guardian get_objects_for_user function is used.
if ct_perm and ct_perm.model_class() == klass:
return get_objects_for_user(user, perm, klass).exists()
# In other cases, it is checked for each object of the given model whether the current user
# fulfills the given rule.
else:
return queryset_rules_filter(user, klass.objects.all(), perm).exists()
......
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