nested_serializers.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import warnings
  2. from netbox.api.serializers import WritableNestedSerializer
  3. from serializers_.nested import NestedContactGroupSerializer, NestedTenantGroupSerializer
  4. from tenancy.models import *
  5. __all__ = [
  6. 'NestedContactSerializer',
  7. 'NestedContactAssignmentSerializer',
  8. 'NestedContactGroupSerializer',
  9. 'NestedContactRoleSerializer',
  10. 'NestedTenantGroupSerializer',
  11. 'NestedTenantSerializer',
  12. ]
  13. # TODO: Remove in v4.2
  14. warnings.warn(
  15. "Dedicated nested serializers will be removed in NetBox v4.2. Use Serializer(nested=True) instead.",
  16. DeprecationWarning
  17. )
  18. #
  19. # Tenants
  20. #
  21. class NestedTenantSerializer(WritableNestedSerializer):
  22. class Meta:
  23. model = Tenant
  24. fields = ['id', 'url', 'display_url', 'display', 'name', 'slug']
  25. #
  26. # Contacts
  27. #
  28. class NestedContactRoleSerializer(WritableNestedSerializer):
  29. class Meta:
  30. model = ContactRole
  31. fields = ['id', 'url', 'display_url', 'display', 'name', 'slug']
  32. class NestedContactSerializer(WritableNestedSerializer):
  33. class Meta:
  34. model = Contact
  35. fields = ['id', 'url', 'display_url', 'display', 'name']
  36. class NestedContactAssignmentSerializer(WritableNestedSerializer):
  37. contact = NestedContactSerializer()
  38. role = NestedContactRoleSerializer
  39. class Meta:
  40. model = ContactAssignment
  41. fields = ['id', 'url', 'display', 'contact', 'role', 'priority']