Sfoglia il codice sorgente

Merge pull request #9124 from tyler-8/wlan_site_filter_3_2

Add filters to VLAN selection group for WirelessLAN Form
Jeremy Stretch 3 anni fa
parent
commit
fa4b88a504
1 ha cambiato i file con 56 aggiunte e 5 eliminazioni
  1. 56 5
      netbox/wireless/forms/models.py

+ 56 - 5
netbox/wireless/forms/models.py

@@ -1,6 +1,6 @@
-from dcim.models import Device, Interface, Location, Site
+from dcim.models import Device, Interface, Location, Region, Site, SiteGroup
 from extras.models import Tag
-from ipam.models import VLAN
+from ipam.models import VLAN, VLANGroup
 from netbox.forms import NetBoxModelForm
 from utilities.forms import DynamicModelChoiceField, DynamicModelMultipleChoiceField, SlugField, StaticSelect
 from wireless.models import *
@@ -31,22 +31,73 @@ class WirelessLANForm(NetBoxModelForm):
         queryset=WirelessLANGroup.objects.all(),
         required=False
     )
+
+    region = DynamicModelChoiceField(
+        queryset=Region.objects.all(),
+        required=False,
+        initial_params={
+            'sites': '$site'
+        }
+    )
+    site_group = DynamicModelChoiceField(
+        queryset=SiteGroup.objects.all(),
+        required=False,
+        initial_params={
+            'sites': '$site'
+        }
+    )
+    site = DynamicModelChoiceField(
+        queryset=Site.objects.all(),
+        required=False,
+        null_option='None',
+        query_params={
+            'region_id': '$region',
+            'group_id': '$site_group',
+        }
+    )
+    vlan_group = DynamicModelChoiceField(
+        queryset=VLANGroup.objects.all(),
+        required=False,
+        label='VLAN group',
+        null_option='None',
+        query_params={
+            'site': '$site'
+        },
+        initial_params={
+            'vlans': '$vlan'
+        }
+    )
     vlan = DynamicModelChoiceField(
         queryset=VLAN.objects.all(),
         required=False,
-        label='VLAN'
+        label='VLAN',
+        query_params={
+            'site_id': '$site',
+            'group_id': '$vlan_group',
+        }
     )
 
     fieldsets = (
         ('Wireless LAN', ('ssid', 'group', 'description', 'tags')),
-        ('VLAN', ('vlan',)),
+        ('VLAN', ('region', 'site_group', 'site', 'vlan_group', 'vlan',)),
         ('Authentication', ('auth_type', 'auth_cipher', 'auth_psk')),
     )
 
     class Meta:
         model = WirelessLAN
         fields = [
-            'ssid', 'group', 'description', 'vlan', 'auth_type', 'auth_cipher', 'auth_psk', 'tags',
+            'ssid',
+            'group',
+            'description',
+            'region',
+            'site_group',
+            'site',
+            'vlan_group',
+            'vlan',
+            'auth_type',
+            'auth_cipher',
+            'auth_psk',
+            'tags',
         ]
         widgets = {
             'auth_type': StaticSelect,