nested_serializers.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. from rest_framework import serializers
  2. from circuits.models import *
  3. from netbox.api import WritableNestedSerializer
  4. __all__ = [
  5. 'NestedCircuitSerializer',
  6. 'NestedCircuitTerminationSerializer',
  7. 'NestedCircuitTypeSerializer',
  8. 'NestedProviderNetworkSerializer',
  9. 'NestedProviderSerializer',
  10. ]
  11. #
  12. # Provider networks
  13. #
  14. class NestedProviderNetworkSerializer(WritableNestedSerializer):
  15. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:providernetwork-detail')
  16. class Meta:
  17. model = ProviderNetwork
  18. fields = ['id', 'url', 'display', 'name']
  19. #
  20. # Providers
  21. #
  22. class NestedProviderSerializer(WritableNestedSerializer):
  23. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
  24. circuit_count = serializers.IntegerField(read_only=True)
  25. class Meta:
  26. model = Provider
  27. fields = ['id', 'url', 'display', 'name', 'slug', 'circuit_count']
  28. #
  29. # Circuits
  30. #
  31. class NestedCircuitTypeSerializer(WritableNestedSerializer):
  32. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
  33. circuit_count = serializers.IntegerField(read_only=True)
  34. class Meta:
  35. model = CircuitType
  36. fields = ['id', 'url', 'display', 'name', 'slug', 'circuit_count']
  37. class NestedCircuitSerializer(WritableNestedSerializer):
  38. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
  39. class Meta:
  40. model = Circuit
  41. fields = ['id', 'url', 'display', 'cid']
  42. class NestedCircuitTerminationSerializer(WritableNestedSerializer):
  43. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittermination-detail')
  44. circuit = NestedCircuitSerializer()
  45. class Meta:
  46. model = CircuitTermination
  47. fields = ['id', 'url', 'display', 'circuit', 'term_side', 'cable', '_occupied']