I applied a method in my django application that will check if the user has a specific permission or part of the group that contains that specific permission.
def user_has_perm(user, *permissions_to_check):
permission_check = True
permissions_not_found = []
user_groups = user.groups.all().prefetch_related('permissions')
for permission in permissions_to_check:
content_type, permission_codename = permission.split('.')
if not user.has_perm(permission) and not user_groups.filter(
permissions__content_type__model__icontains=content_type,
permissions__codename__icontains=permission_codename).exists():
permission_check = False
permissions_not_found.append(permission)
return permission_check, permissions_not_found
Now everything works like a charm, but the Django-Debug-Toolbar complains about the request that it duplicates many times, as a group to check.
This is a bottleneck for me, because some users will have 50 related groups, and I really don’t know how to optimize this query ...
Any suggestions?
thank
source
share