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:
@@ -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:
|
||||
|
@@ -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
21
netbox/users/api/urls.py
Normal 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
14
netbox/users/api/views.py
Normal 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
|
Reference in New Issue
Block a user