feat: add users and groups API routes

This commit is contained in:
Kaaybi
2022-11-12 18:46:52 +00:00
committed by Michael Shamoon
parent dfdfd8a7d7
commit b52c01cf70
8 changed files with 175 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
from django.contrib.auth.models import Group
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
groups = serializers.SerializerMethodField()
permissions = serializers.SerializerMethodField()
inherited_permissions = serializers.SerializerMethodField()
class Meta:
model = User
fields = (
"id",
"username",
"first_name",
"last_name",
"date_joined",
"is_staff",
"is_active",
"is_superuser",
"groups",
"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()
class Meta:
model = Group
fields = (
"id",
"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