serializers.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from rest_framework import serializers
  2. from circuits.models import Provider, CircuitType, Circuit
  3. from dcim.api.serializers import SiteNestedSerializer, InterfaceNestedSerializer
  4. from extras.api.serializers import CustomFieldSerializer
  5. from tenancy.api.serializers import TenantNestedSerializer
  6. #
  7. # Providers
  8. #
  9. class ProviderSerializer(CustomFieldSerializer, serializers.ModelSerializer):
  10. class Meta:
  11. model = Provider
  12. fields = ['id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments',
  13. 'custom_fields']
  14. class ProviderNestedSerializer(ProviderSerializer):
  15. class Meta(ProviderSerializer.Meta):
  16. fields = ['id', 'name', 'slug']
  17. #
  18. # Circuit types
  19. #
  20. class CircuitTypeSerializer(serializers.ModelSerializer):
  21. class Meta:
  22. model = CircuitType
  23. fields = ['id', 'name', 'slug']
  24. class CircuitTypeNestedSerializer(CircuitTypeSerializer):
  25. class Meta(CircuitTypeSerializer.Meta):
  26. pass
  27. #
  28. # Circuits
  29. #
  30. class CircuitSerializer(CustomFieldSerializer, serializers.ModelSerializer):
  31. provider = ProviderNestedSerializer()
  32. type = CircuitTypeNestedSerializer()
  33. tenant = TenantNestedSerializer()
  34. site = SiteNestedSerializer()
  35. interface = InterfaceNestedSerializer()
  36. class Meta:
  37. model = Circuit
  38. fields = ['id', 'cid', 'provider', 'type', 'tenant', 'site', 'interface', 'install_date', 'port_speed',
  39. 'upstream_speed', 'commit_rate', 'xconnect_id', 'comments', 'custom_fields']
  40. class CircuitNestedSerializer(CircuitSerializer):
  41. class Meta(CircuitSerializer.Meta):
  42. fields = ['id', 'cid']