serializers.py 3.0 KB

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