mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-22 20:12:00 -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.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()]
|
||||
|
@ -1,3 +1,4 @@
|
||||
from django.contrib.auth.models import Group, User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
from users.models import ObjectPermission
|
||||
|
@ -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):
|
||||
|
Loading…
Reference in New Issue
Block a user