Revert changes from 89b7f3f

This commit is contained in:
thatmattlove 2021-08-28 09:34:24 -07:00
parent d0208d473d
commit 809de8683b
7 changed files with 448 additions and 466 deletions

View File

@ -131,10 +131,10 @@ class ProviderFilterForm(BootstrapMixin, CustomFieldModelFilterForm):
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region_id'}, 'region_id': '$region_id',
{'accessor': 'site_group_id', 'field_name': 'site_group_id'} 'site_group_id': '$site_group_id',
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -405,9 +405,9 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
provider_network_id = DynamicModelMultipleChoiceField( provider_network_id = DynamicModelMultipleChoiceField(
queryset=ProviderNetwork.objects.all(), queryset=ProviderNetwork.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'provider_id', 'field_name': 'provider_id'} 'provider_id': '$provider_id'
], },
label=_('Provider network'), label=_('Provider network'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -431,10 +431,10 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
site_id = DynamicModelMultipleChoiceField( site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region_id'}, 'region_id': '$region_id',
{'accessor': 'site_group_id', 'field_name': 'site_group_id'}, 'site_group_id': '$site_group_id',
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -467,10 +467,10 @@ class CircuitTerminationForm(BootstrapMixin, forms.ModelForm):
) )
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'site_group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
], },
required=False required=False
) )
provider_network = DynamicModelChoiceField( provider_network = DynamicModelChoiceField(

File diff suppressed because it is too large Load Diff

View File

@ -181,19 +181,16 @@ class ObjectVar(ScriptVariable):
:param model: The NetBox model being referenced :param model: The NetBox model being referenced
:param query_params: A dictionary of additional query parameters to attach when making REST API requests (optional) :param query_params: A dictionary of additional query parameters to attach when making REST API requests (optional)
:param filter_fields: A dictionary or list of dictionaries that define a related
field. Example: `{'accessor': 'group_id', 'field_name': 'tenant_group'}` (optional)
:param null_option: The label to use as a "null" selection option (optional) :param null_option: The label to use as a "null" selection option (optional)
""" """
form_field = DynamicModelChoiceField form_field = DynamicModelChoiceField
def __init__(self, model, query_params=None, filter_fields=None, null_option=None, *args, **kwargs): def __init__(self, model, query_params=None, null_option=None, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.field_attrs.update({ self.field_attrs.update({
'queryset': model.objects.all(), 'queryset': model.objects.all(),
'query_params': query_params, 'query_params': query_params,
'filter_fields': filter_fields,
'null_option': null_option, 'null_option': null_option,
}) })

View File

@ -441,19 +441,19 @@ class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
] }
) )
vlan_group = DynamicModelChoiceField( vlan_group = DynamicModelChoiceField(
queryset=VLANGroup.objects.all(), queryset=VLANGroup.objects.all(),
required=False, required=False,
label='VLAN group', label='VLAN group',
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site'
], },
initial_params={ initial_params={
'vlans': '$vlan' 'vlans': '$vlan'
} }
@ -462,10 +462,10 @@ class PrefixForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
required=False, required=False,
label='VLAN', label='VLAN',
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site',
{'accessor': 'group_id', 'field_name': 'vlan_group'}, 'group_id': '$vlan_group',
] }
) )
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=Role.objects.all(), queryset=Role.objects.all(),
@ -577,10 +577,10 @@ class PrefixBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulk
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
], }
) )
vrf = DynamicModelChoiceField( vrf = DynamicModelChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
@ -698,9 +698,9 @@ class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilter
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region_id'}, 'region_id': '$region_id'
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -886,9 +886,9 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
interface = DynamicModelChoiceField( interface = DynamicModelChoiceField(
queryset=Interface.objects.all(), queryset=Interface.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'device_id', 'field_name': 'device'}, 'device_id': '$device'
], }
) )
virtual_machine = DynamicModelChoiceField( virtual_machine = DynamicModelChoiceField(
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
@ -901,9 +901,9 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=VMInterface.objects.all(), queryset=VMInterface.objects.all(),
required=False, required=False,
label='Interface', label='Interface',
filter_fields=[ query_params={
{'accessor': 'virtual_machine_id', 'field_name': 'virtual_machine'}, 'virtual_machine_id': '$virtual_machine'
] }
) )
vrf = DynamicModelChoiceField( vrf = DynamicModelChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
@ -930,28 +930,28 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
label='Site', label='Site',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'nat_region'}, 'region_id': '$nat_region',
{'accessor': 'group_id', 'field_name': 'nat_site_group'}, 'group_id': '$nat_site_group',
], }
) )
nat_rack = DynamicModelChoiceField( nat_rack = DynamicModelChoiceField(
queryset=Rack.objects.all(), queryset=Rack.objects.all(),
required=False, required=False,
label='Rack', label='Rack',
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site'
], }
) )
nat_device = DynamicModelChoiceField( nat_device = DynamicModelChoiceField(
queryset=Device.objects.all(), queryset=Device.objects.all(),
required=False, required=False,
label='Device', label='Device',
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site',
{'accessor': 'rack_id', 'field_name': 'nat_rack'}, 'rack_id': '$nat_rack',
] }
) )
nat_cluster = DynamicModelChoiceField( nat_cluster = DynamicModelChoiceField(
queryset=Cluster.objects.all(), queryset=Cluster.objects.all(),
@ -962,9 +962,9 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
required=False, required=False,
label='Virtual Machine', label='Virtual Machine',
filter_fields=[ query_params={
{'accessor': 'cluster_id', 'field_name': 'nat_cluster'}, 'cluster_id': '$nat_cluster',
] }
) )
nat_vrf = DynamicModelChoiceField( nat_vrf = DynamicModelChoiceField(
queryset=VRF.objects.all(), queryset=VRF.objects.all(),
@ -975,11 +975,11 @@ class IPAddressForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=IPAddress.objects.all(), queryset=IPAddress.objects.all(),
required=False, required=False,
label='IP Address', label='IP Address',
filter_fields=[ query_params={
{'accessor': 'device_id', 'field_name': 'nat_device'}, 'device_id': '$nat_device',
{'accessor': 'virtual_machine_id', 'field_name': 'nat_virtual_machine'}, 'virtual_machine_id': '$nat_virtual_machine',
{'accessor': 'vrf_id', 'field_name': 'nat_vrf'}, 'vrf_id': '$nat_vrf',
], }
) )
primary_for_parent = forms.BooleanField( primary_for_parent = forms.BooleanField(
required=False, required=False,
@ -1367,10 +1367,10 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm):
initial_params={ initial_params={
'locations': '$location' 'locations': '$location'
}, },
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'sitegroup'}, 'group_id': '$sitegroup',
], }
) )
location = DynamicModelChoiceField( location = DynamicModelChoiceField(
queryset=Location.objects.all(), queryset=Location.objects.all(),
@ -1378,17 +1378,17 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm):
initial_params={ initial_params={
'racks': '$rack' 'racks': '$rack'
}, },
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site',
] }
) )
rack = DynamicModelChoiceField( rack = DynamicModelChoiceField(
queryset=Rack.objects.all(), queryset=Rack.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site',
{'accessor': 'location_id', 'field_name': 'location'}, 'location_id': '$location',
], }
) )
clustergroup = DynamicModelChoiceField( clustergroup = DynamicModelChoiceField(
queryset=ClusterGroup.objects.all(), queryset=ClusterGroup.objects.all(),
@ -1401,9 +1401,9 @@ class VLANGroupForm(BootstrapMixin, CustomFieldModelForm):
cluster = DynamicModelChoiceField( cluster = DynamicModelChoiceField(
queryset=Cluster.objects.all(), queryset=Cluster.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'clustergroup'}, 'group_id': '$clustergroup',
], }
) )
slug = SlugField() slug = SlugField()
@ -1543,9 +1543,9 @@ class VLANForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
group = DynamicModelChoiceField( group = DynamicModelChoiceField(
queryset=VLANGroup.objects.all(), queryset=VLANGroup.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'scope_type', 'field_name': 'scope_type'}, 'scope_type': '$scope_type',
], },
label='VLAN Group' label='VLAN Group'
) )
@ -1570,10 +1570,10 @@ class VLANForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'sitegroup'}, 'group_id': '$sitegroup',
] }
) )
# Other fields # Other fields
@ -1659,17 +1659,17 @@ class VLANBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBulkEd
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
] }
) )
group = DynamicModelChoiceField( group = DynamicModelChoiceField(
queryset=VLANGroup.objects.all(), queryset=VLANGroup.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site'
] }
) )
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
@ -1724,9 +1724,9 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region': '$region'
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -1734,9 +1734,9 @@ class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterFo
queryset=VLANGroup.objects.all(), queryset=VLANGroup.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region': '$region'
], },
label=_('VLAN group'), label=_('VLAN group'),
fetch_trigger='open' fetch_trigger='open'
) )

View File

@ -170,9 +170,9 @@ class TenancyForm(forms.Form):
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'tenant_group'} 'group_id': '$tenant_group'
] }
) )
@ -188,9 +188,9 @@ class TenancyFilterForm(forms.Form):
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'tenant_group'} 'group_id': '$tenant_group_id'
], },
label=_('Tenant'), label=_('Tenant'),
fetch_trigger='open' fetch_trigger='open'
) )

View File

@ -371,20 +371,17 @@ class DynamicModelChoiceMixin:
choice (optional) choice (optional)
:param str fetch_trigger: The event type which will cause the select element to :param str fetch_trigger: The event type which will cause the select element to
fetch data from the API. Must be 'load', 'open', or 'collapse'. (optional) fetch data from the API. Must be 'load', 'open', or 'collapse'. (optional)
:param filter_fields: A dictionary or list of dictionaries that define a related
field. Example: `{'accessor': 'group_id', 'field_name': 'tenant_group'}` (optional)
""" """
filter = django_filters.ModelChoiceFilter filter = django_filters.ModelChoiceFilter
widget = widgets.APISelect widget = widgets.APISelect
def __init__(self, query_params=None, initial_params=None, null_option=None, disabled_indicator=None, fetch_trigger=None, def __init__(self, query_params=None, initial_params=None, null_option=None, disabled_indicator=None, fetch_trigger=None,
filter_fields=[], *args, **kwargs): *args, **kwargs):
self.query_params = query_params or {} self.query_params = query_params or {}
self.initial_params = initial_params or {} self.initial_params = initial_params or {}
self.null_option = null_option self.null_option = null_option
self.disabled_indicator = disabled_indicator self.disabled_indicator = disabled_indicator
self.fetch_trigger = fetch_trigger self.fetch_trigger = fetch_trigger
self.filter_fields = filter_fields
# to_field_name is set by ModelChoiceField.__init__(), but we need to set it early for reference # to_field_name is set by ModelChoiceField.__init__(), but we need to set it early for reference
# by widget_attrs() # by widget_attrs()
@ -412,12 +409,8 @@ class DynamicModelChoiceMixin:
attrs['data-fetch-trigger'] = self.fetch_trigger attrs['data-fetch-trigger'] = self.fetch_trigger
# Attach any static query parameters # Attach any static query parameters
for key, value in self.query_params.items(): if (len(self.query_params) > 0):
widget.add_query_param(key, value) widget.add_query_params(self.query_params)
# Attach any dynamic query parameters
if self.filter_fields is not None and len(self.filter_fields) > 0:
widget.add_filter_fields(self.filter_fields)
return attrs return attrs

View File

@ -126,10 +126,10 @@ class ClusterForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
], }
) )
comments = CommentField() comments = CommentField()
tags = DynamicModelMultipleChoiceField( tags = DynamicModelMultipleChoiceField(
@ -206,10 +206,10 @@ class ClusterBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldModelBul
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
] }
) )
comments = CommentField( comments = CommentField(
widget=SmallTextarea, widget=SmallTextarea,
@ -260,10 +260,10 @@ class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region_id'}, 'region_id': '$region_id',
{'accessor': 'site_group_id', 'field_name': 'site_group'}, 'site_group_id': '$site_group_id',
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -291,26 +291,26 @@ class ClusterAddDevicesForm(BootstrapMixin, forms.Form):
site = DynamicModelChoiceField( site = DynamicModelChoiceField(
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region'}, 'region_id': '$region',
{'accessor': 'group_id', 'field_name': 'site_group'}, 'group_id': '$site_group',
] }
) )
rack = DynamicModelChoiceField( rack = DynamicModelChoiceField(
queryset=Rack.objects.all(), queryset=Rack.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site'
] }
) )
devices = DynamicModelMultipleChoiceField( devices = DynamicModelMultipleChoiceField(
queryset=Device.objects.all(), queryset=Device.objects.all(),
filter_fields=[ query_params={
{'accessor': 'site_id', 'field_name': 'site'}, 'site_id': '$site',
{'accessor': 'rack_id', 'field_name': 'rack'}, 'rack_id': '$rack',
{'accessor': 'cluster_id', 'field_name': 'cluster', 'default_value': None}, 'cluster_id': 'null',
] }
) )
class Meta: class Meta:
@ -362,16 +362,16 @@ class VirtualMachineForm(BootstrapMixin, TenancyForm, CustomFieldModelForm):
) )
cluster = DynamicModelChoiceField( cluster = DynamicModelChoiceField(
queryset=Cluster.objects.all(), queryset=Cluster.objects.all(),
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'cluster_group'}, 'group_id': '$cluster_group'
] }
) )
role = DynamicModelChoiceField( role = DynamicModelChoiceField(
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'vm_role', 'field_name': 'vm_role', 'default_value': True}, "vm_role": "True"
], }
) )
platform = DynamicModelChoiceField( platform = DynamicModelChoiceField(
queryset=Platform.objects.all(), queryset=Platform.objects.all(),
@ -510,9 +510,9 @@ class VirtualMachineBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldM
vm_role=True vm_role=True
), ),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'vm_role', 'field_name': 'vm_role', 'default_value': True}, "vm_role": "True"
] }
) )
tenant = DynamicModelChoiceField( tenant = DynamicModelChoiceField(
queryset=Tenant.objects.all(), queryset=Tenant.objects.all(),
@ -595,10 +595,10 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
queryset=Site.objects.all(), queryset=Site.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'region_id', 'field_name': 'region_id'}, 'region_id': '$region_id',
{'accessor': 'group_id', 'field_name': 'site_group_id'}, 'group_id': '$site_group_id',
], },
label=_('Site'), label=_('Site'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -606,9 +606,9 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldMod
queryset=DeviceRole.objects.all(), queryset=DeviceRole.objects.all(),
required=False, required=False,
null_option='None', null_option='None',
filter_fields=[ query_params={
{'accessor': 'vm_role', 'field_name': 'vm_role', 'default_value': True}, 'vm_role': "True"
], },
label=_('Role'), label=_('Role'),
fetch_trigger='open' fetch_trigger='open'
) )
@ -657,17 +657,17 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm)
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
required=False, required=False,
label='Untagged VLAN', label='Untagged VLAN',
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'vlan_group'}, 'group_id': '$vlan_group',
] }
) )
tagged_vlans = DynamicModelMultipleChoiceField( tagged_vlans = DynamicModelMultipleChoiceField(
queryset=VLAN.objects.all(), queryset=VLAN.objects.all(),
required=False, required=False,
label='Tagged VLANs', label='Tagged VLANs',
filter_fields=[ query_params={
{'accessor': 'group_id', 'field_name': 'vlan_group'}, 'group_id': '$vlan_group',
] }
) )
tags = DynamicModelMultipleChoiceField( tags = DynamicModelMultipleChoiceField(
queryset=Tag.objects.all(), queryset=Tag.objects.all(),
@ -718,9 +718,9 @@ class VMInterfaceCreateForm(BootstrapMixin, CustomFieldsMixin, InterfaceCommonFo
parent = DynamicModelChoiceField( parent = DynamicModelChoiceField(
queryset=VMInterface.objects.all(), queryset=VMInterface.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'virtual_machine_id', 'field_name': 'virtual_machine'}, 'virtual_machine_id': '$virtual_machine',
] }
) )
mac_address = forms.CharField( mac_address = forms.CharField(
required=False, required=False,
@ -896,9 +896,9 @@ class VMInterfaceFilterForm(BootstrapMixin, forms.Form):
virtual_machine_id = DynamicModelMultipleChoiceField( virtual_machine_id = DynamicModelMultipleChoiceField(
queryset=VirtualMachine.objects.all(), queryset=VirtualMachine.objects.all(),
required=False, required=False,
filter_fields=[ query_params={
{'accessor': 'cluster_id', 'field_name': 'cluster_id'}, 'cluster_id': '$cluster_id'
], },
label=_('Virtual machine'), label=_('Virtual machine'),
fetch_trigger='open' fetch_trigger='open'
) )