2
0

models.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. from dcim.models import Device, Interface
  2. from extras.forms import CustomFieldModelForm
  3. from extras.models import Tag
  4. from ipam.models import VLAN
  5. from utilities.forms import (
  6. BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, StaticSelect,
  7. )
  8. from wireless.models import *
  9. __all__ = (
  10. 'WirelessLANForm',
  11. 'WirelessLANGroupForm',
  12. 'WirelessLinkForm',
  13. )
  14. class WirelessLANGroupForm(BootstrapMixin, CustomFieldModelForm):
  15. parent = DynamicModelChoiceField(
  16. queryset=WirelessLANGroup.objects.all(),
  17. required=False
  18. )
  19. slug = SlugField()
  20. class Meta:
  21. model = WirelessLANGroup
  22. fields = [
  23. 'parent', 'name', 'slug', 'description',
  24. ]
  25. class WirelessLANForm(BootstrapMixin, CustomFieldModelForm):
  26. group = DynamicModelChoiceField(
  27. queryset=WirelessLANGroup.objects.all(),
  28. required=False
  29. )
  30. vlan = DynamicModelChoiceField(
  31. queryset=VLAN.objects.all(),
  32. required=False,
  33. label='VLAN'
  34. )
  35. tags = DynamicModelMultipleChoiceField(
  36. queryset=Tag.objects.all(),
  37. required=False
  38. )
  39. class Meta:
  40. model = WirelessLAN
  41. fields = [
  42. 'ssid', 'group', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
  43. ]
  44. fieldsets = (
  45. ('Wireless LAN', ('ssid', 'group', 'description', 'tags')),
  46. ('VLAN', ('vlan',)),
  47. ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
  48. )
  49. widgets = {
  50. 'auth_type': StaticSelect,
  51. 'auth_cipher': StaticSelect,
  52. }
  53. class WirelessLinkForm(BootstrapMixin, CustomFieldModelForm):
  54. device_a = DynamicModelChoiceField(
  55. queryset=Device.objects.all(),
  56. label='Device A',
  57. initial_params={
  58. 'interfaces': '$interface_a'
  59. }
  60. )
  61. interface_a = DynamicModelChoiceField(
  62. queryset=Interface.objects.all(),
  63. query_params={
  64. 'kind': 'wireless',
  65. 'device_id': '$device_a',
  66. },
  67. disabled_indicator='_occupied',
  68. label='Interface A'
  69. )
  70. device_b = DynamicModelChoiceField(
  71. queryset=Device.objects.all(),
  72. label='Device B',
  73. initial_params={
  74. 'interfaces': '$interface_b'
  75. }
  76. )
  77. interface_b = DynamicModelChoiceField(
  78. queryset=Interface.objects.all(),
  79. query_params={
  80. 'kind': 'wireless',
  81. 'device_id': '$device_b',
  82. },
  83. disabled_indicator='_occupied',
  84. label='Interface B'
  85. )
  86. tags = DynamicModelMultipleChoiceField(
  87. queryset=Tag.objects.all(),
  88. required=False
  89. )
  90. class Meta:
  91. model = WirelessLink
  92. fields = [
  93. 'device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'auth_type',
  94. 'auth_cipher', 'auth_psk', 'tags',
  95. ]
  96. fieldsets = (
  97. ('Link', ('device_a', 'interface_a', 'device_b', 'interface_b', 'status', 'ssid', 'description', 'tags')),
  98. ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
  99. )
  100. widgets = {
  101. 'status': StaticSelect,
  102. 'auth_type': StaticSelect,
  103. 'auth_cipher': StaticSelect,
  104. }