mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
Revert "fix: update user permissions and groups, update group permissions"
This reverts commit 57b709824fa058a41c3f13066b27f83ca1281b2c.
This commit is contained in:
parent
57b709824f
commit
fdaf9e9b46
@ -1,11 +1,12 @@
|
|||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.contrib.auth.models import Permission
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
groups = serializers.SerializerMethodField()
|
||||||
|
permissions = serializers.SerializerMethodField()
|
||||||
inherited_permissions = serializers.SerializerMethodField()
|
inherited_permissions = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -15,28 +16,36 @@ class UserSerializer(serializers.ModelSerializer):
|
|||||||
"username",
|
"username",
|
||||||
"first_name",
|
"first_name",
|
||||||
"last_name",
|
"last_name",
|
||||||
"email",
|
|
||||||
"date_joined",
|
"date_joined",
|
||||||
"last_login",
|
|
||||||
"is_active",
|
|
||||||
"is_staff",
|
"is_staff",
|
||||||
|
"is_active",
|
||||||
"is_superuser",
|
"is_superuser",
|
||||||
"groups",
|
"groups",
|
||||||
"user_permissions",
|
"permissions",
|
||||||
"inherited_permissions",
|
"inherited_permissions",
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_inherited_permissions(self, obj):
|
def get_groups(self, obj):
|
||||||
inherited_permissions_ids = []
|
return list(obj.groups.values_list("name", flat=True))
|
||||||
inherited_permissions = obj.get_group_permissions()
|
|
||||||
for permission in inherited_permissions:
|
def get_permissions(self, obj):
|
||||||
inherited_permissions_ids.append(
|
# obj.get_user_permissions() returns more permissions than desired
|
||||||
perm_to_permission(permission).pk,
|
permission_natural_keys = []
|
||||||
|
permissions = obj.user_permissions.all()
|
||||||
|
for permission in permissions:
|
||||||
|
permission_natural_keys.append(
|
||||||
|
permission.natural_key()[1] + "." + permission.natural_key()[0],
|
||||||
)
|
)
|
||||||
return list(set(inherited_permissions_ids))
|
return permission_natural_keys
|
||||||
|
|
||||||
|
def get_inherited_permissions(self, obj):
|
||||||
|
return obj.get_group_permissions()
|
||||||
|
|
||||||
|
|
||||||
class GroupSerializer(serializers.ModelSerializer):
|
class GroupSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
permissions = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Group
|
model = Group
|
||||||
fields = (
|
fields = (
|
||||||
@ -45,32 +54,11 @@ class GroupSerializer(serializers.ModelSerializer):
|
|||||||
"permissions",
|
"permissions",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def get_permissions(self, obj):
|
||||||
def perm_to_permission(perm):
|
permission_natural_keys = []
|
||||||
|
permissions = obj.permissions.all()
|
||||||
"""
|
for permission in permissions:
|
||||||
Convert a identifier string permission format in 'app_label.codename'
|
permission_natural_keys.append(
|
||||||
(teremd as *perm*) to a django permission instance.
|
permission.natural_key()[1] + "." + permission.natural_key()[0],
|
||||||
|
)
|
||||||
Examples
|
return permission_natural_keys
|
||||||
--------
|
|
||||||
>>> permission = perm_to_permission('auth.add_user')
|
|
||||||
>>> permission.content_type.app_label == 'auth'
|
|
||||||
True
|
|
||||||
>>> permission.codename == 'add_user'
|
|
||||||
True
|
|
||||||
"""
|
|
||||||
|
|
||||||
try:
|
|
||||||
app_label, codename = perm.split(".", 1)
|
|
||||||
except IndexError:
|
|
||||||
raise AttributeError(
|
|
||||||
"The format of identifier string permission (perm) is wrong. "
|
|
||||||
"It should be in 'app_label.codename'.",
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
permission = Permission.objects.get(
|
|
||||||
content_type__app_label=app_label,
|
|
||||||
codename=codename,
|
|
||||||
)
|
|
||||||
return permission
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user