23 lines
866 B
Python
23 lines
866 B
Python
from django.contrib.auth.models import Permission
|
|
|
|
|
|
def set_permissions(subject, permission_filters):
|
|
if subject is None or permission_filters is None:
|
|
return
|
|
subject.clear()
|
|
for permission_filter in permission_filters:
|
|
if "*" in permission_filter:
|
|
permission_filter_regex = "^" + permission_filter.replace("*", ".*") + "$"
|
|
permissions = Permission.objects.filter(codename__iregex=permission_filter_regex)
|
|
print(
|
|
" ⚿ Granting",
|
|
permissions.count(),
|
|
"permissions matching '" + permission_filter + "'",
|
|
)
|
|
else:
|
|
permissions = Permission.objects.filter(codename=permission_filter)
|
|
print(" ⚿ Granting permission", permission_filter)
|
|
|
|
for permission in permissions:
|
|
subject.add(permission)
|