diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index 2b8744032..2f8f9fa35 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -11,6 +11,7 @@ ### Bug Fixes * [#7246](https://github.com/netbox-community/netbox/issues/7246) - Don't attempt to URL-decode NAPALM response payloads +* [#7290](https://github.com/netbox-community/netbox/issues/7290) - Defer loading API-backed form fields * [#7887](https://github.com/netbox-community/netbox/issues/7887) - Forward `HTTP_X_FORWARDED_FOR` to custom scripts * [#7962](https://github.com/netbox-community/netbox/issues/7962) - Fix user menu under report/script result view * [#7972](https://github.com/netbox-community/netbox/issues/7972) - Standardize name of `RemoteUserBackend` logger diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index 0822ff206..a668f9b16 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -26,14 +26,12 @@ class ProviderFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -42,8 +40,7 @@ class ProviderFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) asn = forms.IntegerField( required=False, @@ -61,8 +58,7 @@ class ProviderNetworkFilterForm(CustomFieldModelFilterForm): provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, - label=_('Provider'), - fetch_trigger='open' + label=_('Provider') ) tag = TagFilterField(model) @@ -84,14 +80,12 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): type_id = DynamicModelMultipleChoiceField( queryset=CircuitType.objects.all(), required=False, - label=_('Type'), - fetch_trigger='open' + label=_('Type') ) provider_id = DynamicModelMultipleChoiceField( queryset=Provider.objects.all(), required=False, - label=_('Provider'), - fetch_trigger='open' + label=_('Provider') ) provider_network_id = DynamicModelMultipleChoiceField( queryset=ProviderNetwork.objects.all(), @@ -99,8 +93,7 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'provider_id': '$provider_id' }, - label=_('Provider network'), - fetch_trigger='open' + label=_('Provider network') ) status = forms.MultipleChoiceField( choices=CircuitStatusChoices, @@ -110,14 +103,12 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -126,8 +117,7 @@ class CircuitFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) commit_rate = forms.IntegerField( required=False, diff --git a/netbox/dcim/forms/filtersets.py b/netbox/dcim/forms/filtersets.py index a1d996b2c..002f12916 100644 --- a/netbox/dcim/forms/filtersets.py +++ b/netbox/dcim/forms/filtersets.py @@ -57,14 +57,12 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -73,8 +71,7 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -82,14 +79,12 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id', }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) virtual_chassis_id = DynamicModelMultipleChoiceField( queryset=VirtualChassis.objects.all(), required=False, - label=_('Virtual Chassis'), - fetch_trigger='open' + label=_('Virtual Chassis') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -99,8 +94,7 @@ class DeviceComponentFilterForm(CustomFieldModelFilterForm): 'location_id': '$location_id', 'virtual_chassis_id': '$virtual_chassis_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -109,8 +103,7 @@ class RegionFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Parent region'), - fetch_trigger='open' + label=_('Parent region') ) tag = TagFilterField(model) @@ -120,8 +113,7 @@ class SiteGroupFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Parent group'), - fetch_trigger='open' + label=_('Parent group') ) tag = TagFilterField(model) @@ -142,20 +134,17 @@ class SiteFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) asn_id = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), required=False, - label=_('ASNs'), - fetch_trigger='open' + label=_('ASNs') ) tag = TagFilterField(model) @@ -170,14 +159,12 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -186,8 +173,7 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) parent_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -196,8 +182,7 @@ class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_id': '$site_id', }, - label=_('Parent'), - fetch_trigger='open' + label=_('Parent') ) tag = TagFilterField(model) @@ -219,8 +204,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -228,8 +212,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -238,8 +221,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) status = forms.MultipleChoiceField( choices=RackStatusChoices, @@ -260,8 +242,7 @@ class RackFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=RackRole.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) serial = forms.CharField( required=False @@ -280,8 +261,7 @@ class RackElevationFilterForm(RackFilterForm): query_params={ 'site_id': '$site_id', 'location_id': '$location_id', - }, - fetch_trigger='open' + } ) @@ -296,8 +276,7 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -305,15 +284,13 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.prefetch_related('site'), required=False, label=_('Location'), - null_option='None', - fetch_trigger='open' + null_option='None' ) user_id = DynamicModelMultipleChoiceField( queryset=User.objects.all(), @@ -321,8 +298,7 @@ class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) tag = TagFilterField(model) @@ -342,8 +318,7 @@ class DeviceTypeFilterForm(CustomFieldModelFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) subdevice_role = forms.MultipleChoiceField( choices=add_blank_choice(SubdeviceRoleChoices), @@ -410,8 +385,7 @@ class PlatformFilterForm(CustomFieldModelFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) tag = TagFilterField(model) @@ -432,14 +406,12 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -448,8 +420,7 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -458,8 +429,7 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -469,20 +439,17 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi 'site_id': '$site_id', 'location_id': '$location_id', }, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), @@ -490,15 +457,13 @@ class DeviceFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, CustomFi query_params={ 'manufacturer_id': '$manufacturer_id' }, - label=_('Model'), - fetch_trigger='open' + label=_('Model') ) platform_id = DynamicModelMultipleChoiceField( queryset=Platform.objects.all(), required=False, null_option='None', - label=_('Platform'), - fetch_trigger='open' + label=_('Platform') ) status = forms.MultipleChoiceField( choices=DeviceStatusChoices, @@ -589,14 +554,12 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -605,8 +568,7 @@ class VirtualChassisFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) tag = TagFilterField(model) @@ -622,8 +584,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -631,8 +592,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -641,8 +601,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): null_option='None', query_params={ 'site_id': '$site_id' - }, - fetch_trigger='open' + } ) type = forms.MultipleChoiceField( choices=add_blank_choice(CableTypeChoices), @@ -665,8 +624,7 @@ class CableFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'tenant_id': '$tenant_id', 'rack_id': '$rack_id', }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) tag = TagFilterField(model) @@ -680,14 +638,12 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -696,8 +652,7 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), @@ -706,8 +661,7 @@ class PowerPanelFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) tag = TagFilterField(model) @@ -723,14 +677,12 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -738,8 +690,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) power_panel_id = DynamicModelMultipleChoiceField( queryset=PowerPanel.objects.all(), @@ -748,8 +699,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Power panel'), - fetch_trigger='open' + label=_('Power panel') ) rack_id = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), @@ -758,8 +708,7 @@ class PowerFeedFilterForm(CustomFieldModelFilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) status = forms.MultipleChoiceField( choices=PowerFeedStatusChoices, @@ -990,8 +939,7 @@ class InventoryItemFilterForm(DeviceComponentFilterForm): manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, - label=_('Manufacturer'), - fetch_trigger='open' + label=_('Manufacturer') ) serial = forms.CharField( required=False @@ -1016,8 +964,7 @@ class ConsoleConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1025,8 +972,7 @@ class ConsoleConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1034,8 +980,7 @@ class ConsoleConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -1043,8 +988,7 @@ class PowerConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1052,8 +996,7 @@ class PowerConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1061,8 +1004,7 @@ class PowerConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) @@ -1070,8 +1012,7 @@ class InterfaceConnectionFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -1079,8 +1020,7 @@ class InterfaceConnectionFilterForm(FilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) device_id = DynamicModelMultipleChoiceField( queryset=Device.objects.all(), @@ -1088,6 +1028,5 @@ class InterfaceConnectionFilterForm(FilterForm): query_params={ 'site_id': '$site_id' }, - label=_('Device'), - fetch_trigger='open' + label=_('Device') ) diff --git a/netbox/dcim/forms/models.py b/netbox/dcim/forms/models.py index db2f58a63..ca9aa6d3a 100644 --- a/netbox/dcim/forms/models.py +++ b/netbox/dcim/forms/models.py @@ -301,16 +301,14 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): required=False, initial_params={ 'sites': '$site' - }, - fetch_trigger='open' + } ) site_group = DynamicModelChoiceField( queryset=SiteGroup.objects.all(), required=False, initial_params={ 'sites': '$site' - }, - fetch_trigger='open' + } ) site = DynamicModelChoiceField( queryset=Site.objects.all(), @@ -318,24 +316,21 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): query_params={ 'region_id': '$region', 'group_id': '$site_group', - }, - fetch_trigger='open' + } ) location = DynamicModelChoiceField( queryset=Location.objects.all(), required=False, query_params={ 'site_id': '$site' - }, - fetch_trigger='open' + } ) rack = DynamicModelChoiceField( queryset=Rack.objects.all(), query_params={ 'site_id': '$site', 'location_id': '$location', - }, - fetch_trigger='open' + } ) units = NumericArrayField( base_field=forms.IntegerField(), @@ -349,8 +344,7 @@ class RackReservationForm(TenancyForm, CustomFieldModelForm): ) tags = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), - required=False, - fetch_trigger='open' + required=False ) class Meta: diff --git a/netbox/extras/forms/filtersets.py b/netbox/extras/forms/filtersets.py index 07375a203..03cd170b8 100644 --- a/netbox/extras/forms/filtersets.py +++ b/netbox/extras/forms/filtersets.py @@ -164,69 +164,58 @@ class ConfigContextFilterForm(FilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Regions'), - fetch_trigger='open' + label=_('Regions') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site groups'), - fetch_trigger='open' + label=_('Site groups') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Sites'), - fetch_trigger='open' + label=_('Sites') ) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), required=False, - label=_('Device types'), - fetch_trigger='open' + label=_('Device types') ) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, - label=_('Roles'), - fetch_trigger='open' + label=_('Roles') ) platform_id = DynamicModelMultipleChoiceField( queryset=Platform.objects.all(), required=False, - label=_('Platforms'), - fetch_trigger='open' + label=_('Platforms') ) cluster_group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, - label=_('Cluster groups'), - fetch_trigger='open' + label=_('Cluster groups') ) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, - label=_('Clusters'), - fetch_trigger='open' + label=_('Clusters') ) tenant_group_id = DynamicModelMultipleChoiceField( queryset=TenantGroup.objects.all(), required=False, - label=_('Tenant groups'), - fetch_trigger='open' + label=_('Tenant groups') ) tenant_id = DynamicModelMultipleChoiceField( queryset=Tenant.objects.all(), required=False, - label=_('Tenant'), - fetch_trigger='open' + label=_('Tenant') ) tag = DynamicModelMultipleChoiceField( queryset=Tag.objects.all(), to_field_name='slug', required=False, - label=_('Tags'), - fetch_trigger='open' + label=_('Tags') ) @@ -263,8 +252,7 @@ class JournalEntryFilterForm(FilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) assigned_object_type_id = DynamicModelMultipleChoiceField( queryset=ContentType.objects.all(), @@ -272,8 +260,7 @@ class JournalEntryFilterForm(FilterForm): label=_('Object Type'), widget=APISelectMultiple( api_url='/api/extras/content-types/', - ), - fetch_trigger='open' + ) ) kind = forms.ChoiceField( choices=add_blank_choice(JournalEntryKindChoices), @@ -310,8 +297,7 @@ class ObjectChangeFilterForm(FilterForm): label=_('User'), widget=APISelectMultiple( api_url='/api/users/users/', - ), - fetch_trigger='open' + ) ) changed_object_type_id = DynamicModelMultipleChoiceField( queryset=ContentType.objects.all(), @@ -319,6 +305,5 @@ class ObjectChangeFilterForm(FilterForm): label=_('Object Type'), widget=APISelectMultiple( api_url='/api/extras/content-types/', - ), - fetch_trigger='open' + ) ) diff --git a/netbox/ipam/forms/filtersets.py b/netbox/ipam/forms/filtersets.py index b21dbd6cd..d0f4c23c9 100644 --- a/netbox/ipam/forms/filtersets.py +++ b/netbox/ipam/forms/filtersets.py @@ -48,14 +48,12 @@ class VRFFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): import_target_id = DynamicModelMultipleChoiceField( queryset=RouteTarget.objects.all(), required=False, - label=_('Import targets'), - fetch_trigger='open' + label=_('Import targets') ) export_target_id = DynamicModelMultipleChoiceField( queryset=RouteTarget.objects.all(), required=False, - label=_('Export targets'), - fetch_trigger='open' + label=_('Export targets') ) tag = TagFilterField(model) @@ -70,14 +68,12 @@ class RouteTargetFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): importing_vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Imported by VRF'), - fetch_trigger='open' + label=_('Imported by VRF') ) exporting_vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Exported by VRF'), - fetch_trigger='open' + label=_('Exported by VRF') ) tag = TagFilterField(model) @@ -110,8 +106,7 @@ class AggregateFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): rir_id = DynamicModelMultipleChoiceField( queryset=RIR.objects.all(), required=False, - label=_('RIR'), - fetch_trigger='open' + label=_('RIR') ) tag = TagFilterField(model) @@ -127,14 +122,12 @@ class ASNFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): rir_id = DynamicModelMultipleChoiceField( queryset=RIR.objects.all(), required=False, - label=_('RIR'), - fetch_trigger='open' + label=_('RIR') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) @@ -180,14 +173,12 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) present_in_vrf_id = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Present in VRF'), - fetch_trigger='open' + label=_('Present in VRF') ) status = forms.MultipleChoiceField( choices=PrefixStatusChoices, @@ -197,14 +188,12 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -213,15 +202,13 @@ class PrefixFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region_id': '$region_id' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) role_id = DynamicModelMultipleChoiceField( queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) is_pool = forms.NullBooleanField( required=False, @@ -257,8 +244,7 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) status = forms.MultipleChoiceField( choices=PrefixStatusChoices, @@ -269,8 +255,7 @@ class IPRangeFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) tag = TagFilterField(model) @@ -308,14 +293,12 @@ class IPAddressFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), - null_option='Global', - fetch_trigger='open' + null_option='Global' ) present_in_vrf_id = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, - label=_('Present in VRF'), - fetch_trigger='open' + label=_('Present in VRF') ) status = forms.MultipleChoiceField( choices=IPAddressStatusChoices, @@ -376,32 +359,27 @@ class VLANGroupFilterForm(CustomFieldModelFilterForm): region = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) sitegroup = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) location = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, - label=_('Location'), - fetch_trigger='open' + label=_('Location') ) rack = DynamicModelMultipleChoiceField( queryset=Rack.objects.all(), required=False, - label=_('Rack'), - fetch_trigger='open' + label=_('Rack') ) tag = TagFilterField(model) @@ -417,14 +395,12 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -433,8 +409,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region': '$region' }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) group_id = DynamicModelMultipleChoiceField( queryset=VLANGroup.objects.all(), @@ -443,8 +418,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): query_params={ 'region': '$region' }, - label=_('VLAN group'), - fetch_trigger='open' + label=_('VLAN group') ) status = forms.MultipleChoiceField( choices=VLANStatusChoices, @@ -455,8 +429,7 @@ class VLANFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): queryset=Role.objects.all(), required=False, null_option='None', - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) vid = forms.IntegerField( required=False, diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index a833c685e..33b94b478 100644 Binary files a/netbox/project-static/dist/netbox.js and b/netbox/project-static/dist/netbox.js differ diff --git a/netbox/project-static/src/select/api/apiSelect.ts b/netbox/project-static/src/select/api/apiSelect.ts index 032fc83fa..f24c3fa5b 100644 --- a/netbox/project-static/src/select/api/apiSelect.ts +++ b/netbox/project-static/src/select/api/apiSelect.ts @@ -251,7 +251,7 @@ export class APISelect { } else if (collapse !== null) { this.trigger = 'collapse'; } else { - this.trigger = 'load'; + this.trigger = 'open'; } switch (this.trigger) { diff --git a/netbox/tenancy/forms/filtersets.py b/netbox/tenancy/forms/filtersets.py index b08a33fa6..7849e2171 100644 --- a/netbox/tenancy/forms/filtersets.py +++ b/netbox/tenancy/forms/filtersets.py @@ -22,8 +22,7 @@ class TenantGroupFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=TenantGroup.objects.all(), required=False, - label=_('Parent group'), - fetch_trigger='open' + label=_('Parent group') ) tag = TagFilterField(model) @@ -38,8 +37,7 @@ class TenantFilterForm(CustomFieldModelFilterForm): queryset=TenantGroup.objects.all(), required=False, null_option='None', - label=_('Group'), - fetch_trigger='open' + label=_('Group') ) tag = TagFilterField(model) @@ -53,8 +51,7 @@ class ContactGroupFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=ContactGroup.objects.all(), required=False, - label=_('Parent group'), - fetch_trigger='open' + label=_('Parent group') ) tag = TagFilterField(model) @@ -74,7 +71,6 @@ class ContactFilterForm(CustomFieldModelFilterForm): queryset=ContactGroup.objects.all(), required=False, null_option='None', - label=_('Group'), - fetch_trigger='open' + label=_('Group') ) tag = TagFilterField(model) diff --git a/netbox/tenancy/forms/forms.py b/netbox/tenancy/forms/forms.py index cad63c1a6..9a3d00e05 100644 --- a/netbox/tenancy/forms/forms.py +++ b/netbox/tenancy/forms/forms.py @@ -33,8 +33,7 @@ class TenancyFilterForm(forms.Form): queryset=TenantGroup.objects.all(), required=False, null_option='None', - label=_('Tenant group'), - fetch_trigger='open' + label=_('Tenant group') ) tenant_id = DynamicModelMultipleChoiceField( queryset=Tenant.objects.all(), @@ -43,6 +42,5 @@ class TenancyFilterForm(forms.Form): query_params={ 'group_id': '$tenant_group_id' }, - label=_('Tenant'), - fetch_trigger='open' + label=_('Tenant') ) diff --git a/netbox/utilities/forms/fields.py b/netbox/utilities/forms/fields.py index 007215b6e..897dbc174 100644 --- a/netbox/utilities/forms/fields.py +++ b/netbox/utilities/forms/fields.py @@ -399,8 +399,8 @@ class DynamicModelChoiceMixin: 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, - empty_label=None, *args, **kwargs): + def __init__(self, query_params=None, initial_params=None, null_option=None, disabled_indicator=None, + fetch_trigger=None, empty_label=None, *args, **kwargs): self.query_params = query_params or {} self.initial_params = initial_params or {} self.null_option = null_option diff --git a/netbox/virtualization/forms/filtersets.py b/netbox/virtualization/forms/filtersets.py index 2980e97de..9ca8eba6e 100644 --- a/netbox/virtualization/forms/filtersets.py +++ b/netbox/virtualization/forms/filtersets.py @@ -40,20 +40,17 @@ class ClusterFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, - label=_('Type'), - fetch_trigger='open' + label=_('Type') ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -63,15 +60,13 @@ class ClusterFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, null_option='None', - label=_('Group'), - fetch_trigger='open' + label=_('Group') ) tag = TagFilterField(model) @@ -89,33 +84,28 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, queryset=ClusterGroup.objects.all(), required=False, null_option='None', - label=_('Cluster group'), - fetch_trigger='open' + label=_('Cluster group') ) cluster_type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, null_option='None', - label=_('Cluster type'), - fetch_trigger='open' + label=_('Cluster type') ) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, - label=_('Cluster'), - fetch_trigger='open' + label=_('Cluster') ) region_id = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), required=False, - label=_('Region'), - fetch_trigger='open' + label=_('Region') ) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, - label=_('Site group'), - fetch_trigger='open' + label=_('Site group') ) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), @@ -125,8 +115,7 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, 'region_id': '$region_id', 'group_id': '$site_group_id', }, - label=_('Site'), - fetch_trigger='open' + label=_('Site') ) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), @@ -135,8 +124,7 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, query_params={ 'vm_role': "True" }, - label=_('Role'), - fetch_trigger='open' + label=_('Role') ) status = forms.MultipleChoiceField( choices=VirtualMachineStatusChoices, @@ -147,8 +135,7 @@ class VirtualMachineFilterForm(LocalConfigContextFilterForm, TenancyFilterForm, queryset=Platform.objects.all(), required=False, null_option='None', - label=_('Platform'), - fetch_trigger='open' + label=_('Platform') ) mac_address = forms.CharField( required=False, @@ -174,8 +161,7 @@ class VMInterfaceFilterForm(CustomFieldModelFilterForm): cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, - label=_('Cluster'), - fetch_trigger='open' + label=_('Cluster') ) virtual_machine_id = DynamicModelMultipleChoiceField( queryset=VirtualMachine.objects.all(), @@ -183,8 +169,7 @@ class VMInterfaceFilterForm(CustomFieldModelFilterForm): query_params={ 'cluster_id': '$cluster_id' }, - label=_('Virtual machine'), - fetch_trigger='open' + label=_('Virtual machine') ) enabled = forms.NullBooleanField( required=False, diff --git a/netbox/wireless/forms/filtersets.py b/netbox/wireless/forms/filtersets.py index b94332bd7..82df93e6c 100644 --- a/netbox/wireless/forms/filtersets.py +++ b/netbox/wireless/forms/filtersets.py @@ -19,8 +19,7 @@ class WirelessLANGroupFilterForm(CustomFieldModelFilterForm): parent_id = DynamicModelMultipleChoiceField( queryset=WirelessLANGroup.objects.all(), required=False, - label=_('Parent group'), - fetch_trigger='open' + label=_('Parent group') ) tag = TagFilterField(model) @@ -39,8 +38,7 @@ class WirelessLANFilterForm(CustomFieldModelFilterForm): queryset=WirelessLANGroup.objects.all(), required=False, null_option='None', - label=_('Group'), - fetch_trigger='open' + label=_('Group') ) auth_type = forms.ChoiceField( required=False,