serializers.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from taggit_serializer.serializers import TaggitSerializer, TagListSerializerField
  2. from circuits.constants import CIRCUIT_STATUS_CHOICES
  3. from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
  4. from dcim.api.nested_serializers import NestedCableSerializer, NestedSiteSerializer
  5. from dcim.api.serializers import ConnectedEndpointSerializer
  6. from extras.api.customfields import CustomFieldModelSerializer
  7. from tenancy.api.nested_serializers import NestedTenantSerializer
  8. from utilities.api import ChoiceField, ValidatedModelSerializer
  9. from .nested_serializers import *
  10. #
  11. # Providers
  12. #
  13. class ProviderSerializer(TaggitSerializer, CustomFieldModelSerializer):
  14. tags = TagListSerializerField(required=False)
  15. class Meta:
  16. model = Provider
  17. fields = [
  18. 'id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments', 'tags',
  19. 'custom_fields', 'created', 'last_updated',
  20. ]
  21. #
  22. # Circuits
  23. #
  24. class CircuitTypeSerializer(ValidatedModelSerializer):
  25. class Meta:
  26. model = CircuitType
  27. fields = ['id', 'name', 'slug']
  28. class CircuitSerializer(TaggitSerializer, CustomFieldModelSerializer):
  29. provider = NestedProviderSerializer()
  30. status = ChoiceField(choices=CIRCUIT_STATUS_CHOICES, required=False)
  31. type = NestedCircuitTypeSerializer()
  32. tenant = NestedTenantSerializer(required=False, allow_null=True)
  33. tags = TagListSerializerField(required=False)
  34. class Meta:
  35. model = Circuit
  36. fields = [
  37. 'id', 'cid', 'provider', 'type', 'status', 'tenant', 'install_date', 'commit_rate', 'description',
  38. 'comments', 'tags', 'custom_fields', 'created', 'last_updated',
  39. ]
  40. class CircuitTerminationSerializer(ConnectedEndpointSerializer):
  41. circuit = NestedCircuitSerializer()
  42. site = NestedSiteSerializer()
  43. cable = NestedCableSerializer(read_only=True)
  44. class Meta:
  45. model = CircuitTermination
  46. fields = [
  47. 'id', 'circuit', 'term_side', 'site', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
  48. 'description', 'connected_endpoint_type', 'connected_endpoint', 'connection_status', 'cable',
  49. ]