From 178eb31ab8248cec832b972f99db57db8cb9f3eb Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Thu, 13 Feb 2025 09:41:00 -0600 Subject: [PATCH] Fixes #18585: filtering circuits by location This also fixes a related issue where selected filter is not shown in the filter form. Changes: - Adds `CircuitFilterSet.location_id` field to enable filtering with incoming GET params - Adds `CirciotFilterForm.location_id` field to enable filtering from list form - Adds `location_id` to the Location fieldset on `CircuitFilterForm` --- netbox/circuits/filtersets.py | 5 +++++ netbox/circuits/forms/filtersets.py | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/netbox/circuits/filtersets.py b/netbox/circuits/filtersets.py index 964f69f83..188b5343e 100644 --- a/netbox/circuits/filtersets.py +++ b/netbox/circuits/filtersets.py @@ -234,6 +234,11 @@ class CircuitFilterSet(NetBoxModelFilterSet, TenancyFilterSet, ContactModelFilte to_field_name='slug', label=_('Site (slug)'), ) + location_id = django_filters.ModelMultipleChoiceFilter( + field_name='terminations___location', + label=_('Location (ID)'), + queryset=Location.objects.all(), + ) termination_a_id = django_filters.ModelMultipleChoiceFilter( queryset=CircuitTermination.objects.all(), label=_('Termination A (ID)'), diff --git a/netbox/circuits/forms/filtersets.py b/netbox/circuits/forms/filtersets.py index aefc62655..297af5e71 100644 --- a/netbox/circuits/forms/filtersets.py +++ b/netbox/circuits/forms/filtersets.py @@ -126,7 +126,7 @@ class CircuitFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFi 'type_id', 'status', 'install_date', 'termination_date', 'commit_rate', 'distance', 'distance_unit', name=_('Attributes') ), - FieldSet('region_id', 'site_group_id', 'site_id', name=_('Location')), + FieldSet('region_id', 'site_group_id', 'site_id', 'location_id', name=_('Location')), FieldSet('tenant_group_id', 'tenant_id', name=_('Tenant')), FieldSet('contact', 'contact_role', 'contact_group', name=_('Contacts')), ) @@ -181,6 +181,11 @@ class CircuitFilterForm(TenancyFilterForm, ContactModelFilterForm, NetBoxModelFi }, label=_('Site') ) + location_id = DynamicModelMultipleChoiceField( + queryset=Location.objects.all(), + required=False, + label=_('Location') + ) install_date = forms.DateField( label=_('Install date'), required=False,