mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-24 17:38:37 -06:00
Introduce NestedObjectPermissionSerializer
This commit is contained in:
parent
047286f9c0
commit
987414ed7b
@ -1,16 +1,17 @@
|
|||||||
from django.contrib.auth.models import Group, User
|
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',
|
'NestedUserSerializer',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Groups and users
|
|
||||||
#
|
|
||||||
|
|
||||||
class NestedGroupSerializer(WritableNestedSerializer):
|
class NestedGroupSerializer(WritableNestedSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@ -23,3 +24,22 @@ class NestedUserSerializer(WritableNestedSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ['id', 'username']
|
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()]
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from django.contrib.auth.models import Group, User
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
|
||||||
from users.models import ObjectPermission
|
from users.models import ObjectPermission
|
||||||
|
@ -18,10 +18,7 @@ class AppTest(APITestCase):
|
|||||||
|
|
||||||
class ObjectPermissionTest(APIViewTestCases.APIViewTestCase):
|
class ObjectPermissionTest(APIViewTestCases.APIViewTestCase):
|
||||||
model = ObjectPermission
|
model = ObjectPermission
|
||||||
brief_fields = []
|
brief_fields = ['actions', 'groups', 'id', 'object_types', 'users']
|
||||||
|
|
||||||
# TODO: Add a nested serializer for ObjectPermission
|
|
||||||
test_list_objects_brief = None
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
Loading…
Reference in New Issue
Block a user