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(
queryset=Site.objects.all(),
required=False,
filter_fields=[
{'accessor': 'region_id', 'field_name': 'region_id'},
{'accessor': 'site_group_id', 'field_name': 'site_group_id'}
],
query_params={
'region_id': '$region_id',
'site_group_id': '$site_group_id',
},
label=_('Site'),
fetch_trigger='open'
)
@ -405,9 +405,9 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
provider_network_id = DynamicModelMultipleChoiceField(
queryset=ProviderNetwork.objects.all(),
required=False,
filter_fields=[
{'accessor': 'provider_id', 'field_name': 'provider_id'}
],
query_params={
'provider_id': '$provider_id'
},
label=_('Provider network'),
fetch_trigger='open'
)
@ -431,10 +431,10 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilte
site_id = DynamicModelMultipleChoiceField(
queryset=Site.objects.all(),
required=False,
filter_fields=[
{'accessor': 'region_id', 'field_name': 'region_id'},
{'accessor': 'site_group_id', 'field_name': 'site_group_id'},
],
query_params={
'region_id': '$region_id',
'site_group_id': '$site_group_id',
},
label=_('Site'),
fetch_trigger='open'
)
@ -467,10 +467,10 @@ class CircuitTerminationForm(BootstrapMixin, forms.ModelForm):
)
site = DynamicModelChoiceField(
queryset=Site.objects.all(),
filter_fields=[
{'accessor': 'region_id', 'field_name': 'region'},
{'accessor': 'site_group_id', 'field_name': 'site_group'},
],
query_params={
'region_id': '$region',
'group_id': '$site_group',
},
required=False
)
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 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)
"""
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)
self.field_attrs.update({
'queryset': model.objects.all(),
'query_params': query_params,
'filter_fields': filter_fields,
'null_option': null_option,
})

View File

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

View File

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

View File

@ -371,20 +371,17 @@ class DynamicModelChoiceMixin:
choice (optional)
: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)
: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
widget = widgets.APISelect
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.initial_params = initial_params or {}
self.null_option = null_option
self.disabled_indicator = disabled_indicator
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
# by widget_attrs()
@ -412,12 +409,8 @@ class DynamicModelChoiceMixin:
attrs['data-fetch-trigger'] = self.fetch_trigger
# Attach any static query parameters
for key, value in self.query_params.items():
widget.add_query_param(key, value)
# 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)
if (len(self.query_params) > 0):
widget.add_query_params(self.query_params)
return attrs

View File

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