nested_serializers.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from rest_framework import serializers
  2. from netbox.api import WritableNestedSerializer
  3. from tenancy.models import *
  4. __all__ = [
  5. 'NestedContactSerializer',
  6. 'NestedContactGroupSerializer',
  7. 'NestedContactRoleSerializer',
  8. 'NestedTenantGroupSerializer',
  9. 'NestedTenantSerializer',
  10. ]
  11. #
  12. # Tenants
  13. #
  14. class NestedTenantGroupSerializer(WritableNestedSerializer):
  15. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenantgroup-detail')
  16. tenant_count = serializers.IntegerField(read_only=True)
  17. _depth = serializers.IntegerField(source='level', read_only=True)
  18. class Meta:
  19. model = TenantGroup
  20. fields = ['id', 'url', 'display', 'name', 'slug', 'tenant_count', '_depth']
  21. class NestedTenantSerializer(WritableNestedSerializer):
  22. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:tenant-detail')
  23. class Meta:
  24. model = Tenant
  25. fields = ['id', 'url', 'display', 'name', 'slug']
  26. #
  27. # Contacts
  28. #
  29. class NestedContactGroupSerializer(WritableNestedSerializer):
  30. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactgroup-detail')
  31. contact_count = serializers.IntegerField(read_only=True)
  32. _depth = serializers.IntegerField(source='level', read_only=True)
  33. class Meta:
  34. model = ContactGroup
  35. fields = ['id', 'url', 'display', 'name', 'slug', 'contact_count', '_depth']
  36. class NestedContactRoleSerializer(WritableNestedSerializer):
  37. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contactrole-detail')
  38. class Meta:
  39. model = ContactRole
  40. fields = ['id', 'url', 'display', 'name', 'slug']
  41. class NestedContactSerializer(WritableNestedSerializer):
  42. url = serializers.HyperlinkedIdentityField(view_name='tenancy-api:contact-detail')
  43. class Meta:
  44. model = Contact
  45. fields = ['id', 'url', 'display', 'name']