serializers.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. from rest_framework import serializers
  2. from dcim.choices import LinkStatusChoices
  3. from dcim.api.serializers import NestedInterfaceSerializer
  4. from ipam.api.serializers import NestedVLANSerializer
  5. from netbox.api import ChoiceField
  6. from netbox.api.serializers import NestedGroupModelSerializer, PrimaryModelSerializer
  7. from wireless.choices import *
  8. from wireless.models import *
  9. from .nested_serializers import *
  10. __all__ = (
  11. 'WirelessLANGroupSerializer',
  12. 'WirelessLANSerializer',
  13. 'WirelessLinkSerializer',
  14. )
  15. class WirelessLANGroupSerializer(NestedGroupModelSerializer):
  16. url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslangroup-detail')
  17. parent = NestedWirelessLANGroupSerializer(required=False, allow_null=True, default=None)
  18. wirelesslan_count = serializers.IntegerField(read_only=True)
  19. class Meta:
  20. model = WirelessLANGroup
  21. fields = [
  22. 'id', 'url', 'display', 'name', 'slug', 'parent', 'description', 'tags', 'custom_fields', 'created',
  23. 'last_updated', 'wirelesslan_count', '_depth',
  24. ]
  25. class WirelessLANSerializer(PrimaryModelSerializer):
  26. url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslan-detail')
  27. group = NestedWirelessLANGroupSerializer(required=False, allow_null=True)
  28. vlan = NestedVLANSerializer(required=False, allow_null=True)
  29. auth_type = ChoiceField(choices=WirelessAuthTypeChoices, required=False, allow_blank=True)
  30. auth_cipher = ChoiceField(choices=WirelessAuthCipherChoices, required=False, allow_blank=True)
  31. class Meta:
  32. model = WirelessLAN
  33. fields = [
  34. 'id', 'url', 'display', 'ssid', 'description', 'group', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk',
  35. 'description', 'tags', 'custom_fields', 'created', 'last_updated',
  36. ]
  37. class WirelessLinkSerializer(PrimaryModelSerializer):
  38. url = serializers.HyperlinkedIdentityField(view_name='wireless-api:wirelesslink-detail')
  39. status = ChoiceField(choices=LinkStatusChoices, required=False)
  40. interface_a = NestedInterfaceSerializer()
  41. interface_b = NestedInterfaceSerializer()
  42. auth_type = ChoiceField(choices=WirelessAuthTypeChoices, required=False, allow_blank=True)
  43. auth_cipher = ChoiceField(choices=WirelessAuthCipherChoices, required=False, allow_blank=True)
  44. class Meta:
  45. model = WirelessLink
  46. fields = [
  47. 'id', 'url', 'display', 'interface_a', 'interface_b', 'ssid', 'status', 'description', 'auth_type',
  48. 'auth_cipher', 'auth_psk', 'description', 'tags', 'custom_fields', 'created', 'last_updated',
  49. ]