mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-07-28 18:24:38 -05:00
frontend permissions dialogs
This commit is contained in:
@@ -1,12 +1,21 @@
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import User
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class UserSerializer(serializers.ModelSerializer):
|
||||
|
||||
groups = serializers.SerializerMethodField()
|
||||
permissions = serializers.SerializerMethodField()
|
||||
groups = serializers.SlugRelatedField(
|
||||
many=True,
|
||||
queryset=Group.objects.all(),
|
||||
slug_field="name",
|
||||
)
|
||||
user_permissions = serializers.SlugRelatedField(
|
||||
many=True,
|
||||
queryset=Permission.objects.all(),
|
||||
slug_field="codename",
|
||||
)
|
||||
inherited_permissions = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
@@ -21,30 +30,21 @@ class UserSerializer(serializers.ModelSerializer):
|
||||
"is_active",
|
||||
"is_superuser",
|
||||
"groups",
|
||||
"permissions",
|
||||
"user_permissions",
|
||||
"inherited_permissions",
|
||||
)
|
||||
|
||||
def get_groups(self, obj):
|
||||
return list(obj.groups.values_list("name", flat=True))
|
||||
|
||||
def get_permissions(self, obj):
|
||||
# obj.get_user_permissions() returns more permissions than desired
|
||||
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 permission_natural_keys
|
||||
|
||||
def get_inherited_permissions(self, obj):
|
||||
return obj.get_group_permissions()
|
||||
|
||||
|
||||
class GroupSerializer(serializers.ModelSerializer):
|
||||
|
||||
permissions = serializers.SerializerMethodField()
|
||||
permissions = serializers.SlugRelatedField(
|
||||
many=True,
|
||||
queryset=Permission.objects.all(),
|
||||
slug_field="codename",
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Group
|
||||
@@ -53,12 +53,3 @@ class GroupSerializer(serializers.ModelSerializer):
|
||||
"name",
|
||||
"permissions",
|
||||
)
|
||||
|
||||
def get_permissions(self, obj):
|
||||
permission_natural_keys = []
|
||||
permissions = obj.permissions.all()
|
||||
for permission in permissions:
|
||||
permission_natural_keys.append(
|
||||
permission.natural_key()[1] + "." + permission.natural_key()[0],
|
||||
)
|
||||
return permission_natural_keys
|
||||
|
Reference in New Issue
Block a user