permissions.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.contrib.auth import get_user_model
  2. from django.contrib.contenttypes.models import ContentType
  3. from rest_framework import serializers
  4. from netbox.api.fields import ContentTypeField, SerializedPKRelatedField
  5. from netbox.api.serializers import ValidatedModelSerializer
  6. from users.models import Group, ObjectPermission
  7. from .users import GroupSerializer, UserSerializer
  8. __all__ = (
  9. 'ObjectPermissionSerializer',
  10. )
  11. class ObjectPermissionSerializer(ValidatedModelSerializer):
  12. url = serializers.HyperlinkedIdentityField(view_name='users-api:objectpermission-detail')
  13. object_types = ContentTypeField(
  14. queryset=ContentType.objects.all(),
  15. many=True
  16. )
  17. groups = SerializedPKRelatedField(
  18. queryset=Group.objects.all(),
  19. serializer=GroupSerializer,
  20. nested=True,
  21. required=False,
  22. many=True
  23. )
  24. users = SerializedPKRelatedField(
  25. queryset=get_user_model().objects.all(),
  26. serializer=UserSerializer,
  27. nested=True,
  28. required=False,
  29. many=True
  30. )
  31. class Meta:
  32. model = ObjectPermission
  33. fields = (
  34. 'id', 'url', 'display', 'name', 'description', 'enabled', 'object_types', 'groups', 'users', 'actions',
  35. 'constraints',
  36. )
  37. brief_fields = (
  38. 'id', 'url', 'display', 'name', 'description', 'enabled', 'object_types', 'groups', 'users', 'actions',
  39. )