Revert "fix: update user permissions and groups, update group permissions"

This reverts commit 57b709824fa058a41c3f13066b27f83ca1281b2c.
This commit is contained in:
Michael Shamoon 2022-11-13 14:18:44 -08:00
parent 57b709824f
commit fdaf9e9b46

View File

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