serializers.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from rest_framework import serializers
  2. from circuits.models import Provider, Circuit, CircuitTermination, CircuitType
  3. from dcim.api.serializers import NestedSiteSerializer, InterfaceSerializer
  4. from extras.api.serializers import CustomFieldValueSerializer
  5. from tenancy.api.serializers import NestedTenantSerializer
  6. #
  7. # Providers
  8. #
  9. class ProviderSerializer(serializers.ModelSerializer):
  10. custom_field_values = CustomFieldValueSerializer(many=True)
  11. class Meta:
  12. model = Provider
  13. fields = [
  14. 'id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments',
  15. 'custom_field_values',
  16. ]
  17. class NestedProviderSerializer(serializers.ModelSerializer):
  18. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:provider-detail')
  19. class Meta:
  20. model = Provider
  21. fields = ['id', 'url', 'name', 'slug']
  22. class WritableProviderSerializer(serializers.ModelSerializer):
  23. class Meta:
  24. model = Provider
  25. fields = [
  26. 'id', 'name', 'slug', 'asn', 'account', 'portal_url', 'noc_contact', 'admin_contact', 'comments',
  27. ]
  28. #
  29. # Circuit types
  30. #
  31. class CircuitTypeSerializer(serializers.ModelSerializer):
  32. class Meta:
  33. model = CircuitType
  34. fields = ['id', 'name', 'slug']
  35. class NestedCircuitTypeSerializer(serializers.ModelSerializer):
  36. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuittype-detail')
  37. class Meta:
  38. model = CircuitType
  39. fields = ['id', 'url', 'name', 'slug']
  40. #
  41. # Circuits
  42. #
  43. class CircuitSerializer(serializers.ModelSerializer):
  44. provider = NestedProviderSerializer()
  45. type = NestedCircuitTypeSerializer()
  46. tenant = NestedTenantSerializer()
  47. custom_field_values = CustomFieldValueSerializer(many=True)
  48. class Meta:
  49. model = Circuit
  50. fields = [
  51. 'id', 'cid', 'provider', 'type', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
  52. 'custom_field_values',
  53. ]
  54. class NestedCircuitSerializer(serializers.ModelSerializer):
  55. url = serializers.HyperlinkedIdentityField(view_name='circuits-api:circuit-detail')
  56. class Meta:
  57. model = Circuit
  58. fields = ['id', 'url', 'cid']
  59. class WritableCircuitSerializer(serializers.ModelSerializer):
  60. class Meta:
  61. model = Circuit
  62. fields = [
  63. 'id', 'cid', 'provider', 'type', 'tenant', 'install_date', 'commit_rate', 'description', 'comments',
  64. ]
  65. #
  66. # Circuit Terminations
  67. #
  68. class CircuitTerminationSerializer(serializers.ModelSerializer):
  69. circuit = NestedCircuitSerializer()
  70. site = NestedSiteSerializer()
  71. interface = InterfaceSerializer()
  72. class Meta:
  73. model = CircuitTermination
  74. fields = [
  75. 'id', 'circuit', 'term_side', 'site', 'interface', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
  76. ]
  77. class WritableCircuitTerminationSerializer(serializers.ModelSerializer):
  78. class Meta:
  79. model = CircuitTermination
  80. fields = [
  81. 'id', 'circuit', 'term_side', 'site', 'interface', 'port_speed', 'upstream_speed', 'xconnect_id', 'pp_info',
  82. ]