Introduce NestedObjectPermissionSerializer

This commit is contained in:
Jeremy Stretch 2020-06-08 15:40:41 -04:00
parent 047286f9c0
commit 987414ed7b
3 changed files with 28 additions and 10 deletions

View File

@ -1,16 +1,17 @@
from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from rest_framework import serializers
from utilities.api import WritableNestedSerializer
from users.models import ObjectPermission
from utilities.api import ContentTypeField, WritableNestedSerializer
_all_ = [
__all__ = [
'NestedGroupSerializer',
'NestedObjectPermissionSerializer',
'NestedUserSerializer',
]
#
# Groups and users
#
class NestedGroupSerializer(WritableNestedSerializer):
class Meta:
@ -23,3 +24,22 @@ class NestedUserSerializer(WritableNestedSerializer):
class Meta:
model = User
fields = ['id', 'username']
class NestedObjectPermissionSerializer(WritableNestedSerializer):
object_types = ContentTypeField(
queryset=ContentType.objects.all(),
many=True
)
groups = serializers.SerializerMethodField(read_only=True)
users = serializers.SerializerMethodField(read_only=True)
class Meta:
model = ObjectPermission
fields = ['id', 'object_types', 'groups', 'users', 'actions']
def get_groups(self, obj):
return [g.name for g in obj.groups.all()]
def get_users(self, obj):
return [u.username for u in obj.users.all()]

View File

@ -1,3 +1,4 @@
from django.contrib.auth.models import Group, User
from django.contrib.contenttypes.models import ContentType
from users.models import ObjectPermission

View File

@ -18,10 +18,7 @@ class AppTest(APITestCase):
class ObjectPermissionTest(APIViewTestCases.APIViewTestCase):
model = ObjectPermission
brief_fields = []
# TODO: Add a nested serializer for ObjectPermission
test_list_objects_brief = None
brief_fields = ['actions', 'groups', 'id', 'object_types', 'users']
@classmethod
def setUpTestData(cls):