serializers.py 3.1 KB

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