diff --git a/netbox/wireless/forms/models.py b/netbox/wireless/forms/models.py index 64c9e96ef..7c5c048d6 100644 --- a/netbox/wireless/forms/models.py +++ b/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,