models.py 5.4 KB

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