frontend permissions dialogs

This commit is contained in:
Michael Shamoon
2022-11-13 22:58:07 -08:00
parent b6f1ced455
commit f461485aa0
13 changed files with 164 additions and 82 deletions

View File

@@ -856,7 +856,7 @@ class UiSettingsView(GenericAPIView):
ui_settings["update_checking"] = {
"backend_setting": settings.ENABLE_UPDATE_CHECK,
}
roles = user.get_all_permissions()
roles = user.user_permissions.values_list("codename", flat=True)
return Response(
{
"user_id": user.id,

View File

@@ -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