1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Add REST API endpoint for ObjectPermissions

This commit is contained in:
Jeremy Stretch
2020-06-03 13:08:04 -04:00
parent 19b57aa1ea
commit 3084d58da1
8 changed files with 228 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
from django.contrib.auth.models import User
from django.contrib.auth.models import Group, User
from utilities.api import WritableNestedSerializer
@@ -8,9 +8,16 @@ _all_ = [
#
# Users
# Groups and users
#
class NestedGroupSerializer(WritableNestedSerializer):
class Meta:
model = Group
fields = ['id', 'name']
class NestedUserSerializer(WritableNestedSerializer):
class Meta:

View File

@@ -1,4 +1,28 @@
from django.contrib.contenttypes.models import ContentType
from users.models import ObjectPermission
from utilities.api import ContentTypeField, SerializedPKRelatedField, ValidatedModelSerializer
from .nested_serializers import *
# Placeholder for future serializers
class ObjectPermissionSerializer(ValidatedModelSerializer):
object_types = ContentTypeField(
queryset=ContentType.objects.all(),
many=True
)
groups = SerializedPKRelatedField(
queryset=Group.objects.all(),
serializer=NestedGroupSerializer,
required=False,
many=True
)
users = SerializedPKRelatedField(
queryset=User.objects.all(),
serializer=NestedUserSerializer,
required=False,
many=True
)
class Meta:
model = ObjectPermission
fields = ('id', 'object_types', 'groups', 'users', 'actions', 'constraints')

21
netbox/users/api/urls.py Normal file
View File

@@ -0,0 +1,21 @@
from rest_framework import routers
from . import views
class UsersRootView(routers.APIRootView):
"""
Users API root view
"""
def get_view_name(self):
return 'Users'
router = routers.DefaultRouter()
router.APIRootView = UsersRootView
# Permissions
router.register('permissions', views.ObjectPermissionViewSet)
app_name = 'users-api'
urlpatterns = router.urls

14
netbox/users/api/views.py Normal file
View File

@@ -0,0 +1,14 @@
from utilities.api import ModelViewSet
from . import serializers
from users.models import ObjectPermission
#
# ObjectPermissions
#
class ObjectPermissionViewSet(ModelViewSet):
queryset = ObjectPermission.objects.prefetch_related('object_types', 'groups', 'users')
serializer_class = serializers.ObjectPermissionSerializer
# filterset_class = filters.ObjectPermissionFilterSet