nested_serializers.py 1.5 KB

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