nested_serializers.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from rest_framework import serializers
  2. from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, VLAN, VLANGroup, VRF
  3. from utilities.api import WritableNestedSerializer
  4. __all__ = [
  5. 'NestedAggregateSerializer',
  6. 'NestedIPAddressSerializer',
  7. 'NestedPrefixSerializer',
  8. 'NestedRIRSerializer',
  9. 'NestedRoleSerializer',
  10. 'NestedVLANGroupSerializer',
  11. 'NestedVLANSerializer',
  12. 'NestedVRFSerializer',
  13. ]
  14. #
  15. # VRFs
  16. #
  17. class NestedVRFSerializer(WritableNestedSerializer):
  18. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vrf-detail')
  19. class Meta:
  20. model = VRF
  21. fields = ['id', 'url', 'name', 'rd']
  22. #
  23. # RIRs/aggregates
  24. #
  25. class NestedRIRSerializer(WritableNestedSerializer):
  26. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:rir-detail')
  27. class Meta:
  28. model = RIR
  29. fields = ['id', 'url', 'name', 'slug']
  30. class NestedAggregateSerializer(WritableNestedSerializer):
  31. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:aggregate-detail')
  32. class Meta:
  33. model = Aggregate
  34. fields = ['id', 'url', 'family', 'prefix']
  35. #
  36. # VLANs
  37. #
  38. class NestedRoleSerializer(WritableNestedSerializer):
  39. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:role-detail')
  40. class Meta:
  41. model = Role
  42. fields = ['id', 'url', 'name', 'slug']
  43. class NestedVLANGroupSerializer(WritableNestedSerializer):
  44. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlangroup-detail')
  45. class Meta:
  46. model = VLANGroup
  47. fields = ['id', 'url', 'name', 'slug']
  48. class NestedVLANSerializer(WritableNestedSerializer):
  49. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:vlan-detail')
  50. class Meta:
  51. model = VLAN
  52. fields = ['id', 'url', 'vid', 'name', 'display_name']
  53. #
  54. # Prefixes
  55. #
  56. class NestedPrefixSerializer(WritableNestedSerializer):
  57. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:prefix-detail')
  58. class Meta:
  59. model = Prefix
  60. fields = ['id', 'url', 'family', 'prefix']
  61. #
  62. # IP addresses
  63. #
  64. class NestedIPAddressSerializer(WritableNestedSerializer):
  65. url = serializers.HyperlinkedIdentityField(view_name='ipam-api:ipaddress-detail')
  66. class Meta:
  67. model = IPAddress
  68. fields = ['id', 'url', 'family', 'address']