models.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. from dcim.models import Device, Interface, Location, Site
  2. from extras.forms import CustomFieldModelForm
  3. from extras.models import Tag
  4. from ipam.models import VLAN
  5. from utilities.forms import DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, StaticSelect
  6. from wireless.models import *
  7. __all__ = (
  8. 'WirelessLANForm',
  9. 'WirelessLANGroupForm',
  10. 'WirelessLinkForm',
  11. )
  12. class WirelessLANGroupForm(CustomFieldModelForm):
  13. parent = DynamicModelChoiceField(
  14. queryset=WirelessLANGroup.objects.all(),
  15. required=False
  16. )
  17. slug = SlugField()
  18. tags = DynamicModelMultipleChoiceField(
  19. queryset=Tag.objects.all(),
  20. required=False
  21. )
  22. class Meta:
  23. model = WirelessLANGroup
  24. fields = [
  25. 'parent', 'name', 'slug', 'description', 'tags',
  26. ]
  27. class WirelessLANForm(CustomFieldModelForm):
  28. group = DynamicModelChoiceField(
  29. queryset=WirelessLANGroup.objects.all(),
  30. required=False
  31. )
  32. vlan = DynamicModelChoiceField(
  33. queryset=VLAN.objects.all(),
  34. required=False,
  35. label='VLAN'
  36. )
  37. tags = DynamicModelMultipleChoiceField(
  38. queryset=Tag.objects.all(),
  39. required=False
  40. )
  41. class Meta:
  42. model = WirelessLAN
  43. fields = [
  44. 'ssid', 'group', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
  45. ]
  46. fieldsets = (
  47. ('Wireless LAN', ('ssid', 'group', 'description', 'tags')),
  48. ('VLAN', ('vlan',)),
  49. ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
  50. )
  51. widgets = {
  52. 'auth_type': StaticSelect,
  53. 'auth_cipher': StaticSelect,
  54. }
  55. class WirelessLinkForm(CustomFieldModelForm):
  56. site_a = DynamicModelChoiceField(
  57. queryset=Site.objects.all(),
  58. required=False,
  59. label='Site',
  60. initial_params={
  61. 'devices': '$device_a',
  62. }
  63. )
  64. location_a = DynamicModelChoiceField(
  65. queryset=Location.objects.all(),
  66. required=False,
  67. label='Location',
  68. initial_params={
  69. 'devices': '$device_a',
  70. }
  71. )
  72. device_a = DynamicModelChoiceField(
  73. queryset=Device.objects.all(),
  74. query_params={
  75. 'site_id': '$site_a',
  76. 'location_id': '$location_a',
  77. },
  78. required=False,
  79. label='Device',
  80. initial_params={
  81. 'interfaces': '$interface_a'
  82. }
  83. )
  84. interface_a = DynamicModelChoiceField(
  85. queryset=Interface.objects.all(),
  86. query_params={
  87. 'kind': 'wireless',
  88. 'device_id': '$device_a',
  89. },
  90. disabled_indicator='_occupied',
  91. label='Interface'
  92. )
  93. site_b = DynamicModelChoiceField(
  94. queryset=Site.objects.all(),
  95. required=False,
  96. label='Site',
  97. initial_params={
  98. 'devices': '$device_b',
  99. }
  100. )
  101. location_b = DynamicModelChoiceField(
  102. queryset=Location.objects.all(),
  103. required=False,
  104. label='Location',
  105. initial_params={
  106. 'devices': '$device_b',
  107. }
  108. )
  109. device_b = DynamicModelChoiceField(
  110. queryset=Device.objects.all(),
  111. query_params={
  112. 'site_id': '$site_b',
  113. 'location_id': '$location_b',
  114. },
  115. required=False,
  116. label='Device',
  117. initial_params={
  118. 'interfaces': '$interface_b'
  119. }
  120. )
  121. interface_b = DynamicModelChoiceField(
  122. queryset=Interface.objects.all(),
  123. query_params={
  124. 'kind': 'wireless',
  125. 'device_id': '$device_b',
  126. },
  127. disabled_indicator='_occupied',
  128. label='Interface'
  129. )
  130. tags = DynamicModelMultipleChoiceField(
  131. queryset=Tag.objects.all(),
  132. required=False
  133. )
  134. class Meta:
  135. model = WirelessLink
  136. fields = [
  137. 'site_a', 'location_a', 'device_a', 'interface_a', 'site_b', 'location_b', 'device_b', 'interface_b',
  138. 'status', 'ssid', 'description', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
  139. ]
  140. fieldsets = (
  141. ('Side A', ('site_a', 'location_a', 'device_a', 'interface_a')),
  142. ('Side B', ('site_b', 'location_b', 'device_b', 'interface_b')),
  143. ('Link', ('status', 'ssid', 'description', 'tags')),
  144. ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
  145. )
  146. widgets = {
  147. 'status': StaticSelect,
  148. 'auth_type': StaticSelect,
  149. 'auth_cipher': StaticSelect,
  150. }
  151. labels = {
  152. 'auth_type': 'Type',
  153. 'auth_cipher': 'Cipher',
  154. }