From ecb9fc65b78017988358a0418cc98be9b5df5f68 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 3 Jan 2022 10:41:43 -0500 Subject: [PATCH] Closes #8197: Allow filtering sites by group when connecting a cable --- docs/release-notes/version-3.1.md | 1 + netbox/dcim/forms/connections.py | 29 ++++++++++++------------ netbox/templates/dcim/cable_connect.html | 9 ++++++++ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/docs/release-notes/version-3.1.md b/docs/release-notes/version-3.1.md index d8e56b1ee..ba31afc7a 100644 --- a/docs/release-notes/version-3.1.md +++ b/docs/release-notes/version-3.1.md @@ -6,6 +6,7 @@ * [#8192](https://github.com/netbox-community/netbox/issues/8192) - Add "add prefix" button to aggregate child prefixes view * [#8194](https://github.com/netbox-community/netbox/issues/8194) - Enable bulk user assignment to groups under admin UI +* [#8197](https://github.com/netbox-community/netbox/issues/8197) - Allow filtering sites by group when connecting a cable * [#8210](https://github.com/netbox-community/netbox/issues/8210) - Establish `netbox/local/` as a path for local resources ### Bug Fixes diff --git a/netbox/dcim/forms/connections.py b/netbox/dcim/forms/connections.py index 771ff38bc..6a7a09023 100644 --- a/netbox/dcim/forms/connections.py +++ b/netbox/dcim/forms/connections.py @@ -27,7 +27,7 @@ class ConnectCableToDeviceForm(TenancyForm, CustomFieldModelForm): label='Region', required=False ) - termination_b_site_group = DynamicModelChoiceField( + termination_b_sitegroup = DynamicModelChoiceField( queryset=SiteGroup.objects.all(), label='Site group', required=False @@ -38,7 +38,7 @@ class ConnectCableToDeviceForm(TenancyForm, CustomFieldModelForm): required=False, query_params={ 'region_id': '$termination_b_region', - 'group_id': '$termination_b_site_group', + 'group_id': '$termination_b_sitegroup', } ) termination_b_location = DynamicModelChoiceField( @@ -78,9 +78,9 @@ class ConnectCableToDeviceForm(TenancyForm, CustomFieldModelForm): class Meta: model = Cable fields = [ - 'termination_b_region', 'termination_b_site', 'termination_b_rack', 'termination_b_device', - 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', 'length', 'length_unit', - 'tags', + 'termination_b_region', 'termination_b_sitegroup', 'termination_b_site', 'termination_b_rack', + 'termination_b_device', 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', + 'length', 'length_unit', 'tags', ] widgets = { 'status': StaticSelect, @@ -182,7 +182,7 @@ class ConnectCableToCircuitTerminationForm(TenancyForm, CustomFieldModelForm): label='Region', required=False ) - termination_b_site_group = DynamicModelChoiceField( + termination_b_sitegroup = DynamicModelChoiceField( queryset=SiteGroup.objects.all(), label='Site group', required=False @@ -193,7 +193,7 @@ class ConnectCableToCircuitTerminationForm(TenancyForm, CustomFieldModelForm): required=False, query_params={ 'region_id': '$termination_b_region', - 'group_id': '$termination_b_site_group', + 'group_id': '$termination_b_sitegroup', } ) termination_b_circuit = DynamicModelChoiceField( @@ -219,9 +219,9 @@ class ConnectCableToCircuitTerminationForm(TenancyForm, CustomFieldModelForm): class Meta(ConnectCableToDeviceForm.Meta): fields = [ - 'termination_b_provider', 'termination_b_region', 'termination_b_site', 'termination_b_circuit', - 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', 'length', 'length_unit', - 'tags', + 'termination_b_provider', 'termination_b_region', 'termination_b_sitegroup', 'termination_b_site', + 'termination_b_circuit', 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', 'color', + 'length', 'length_unit', 'tags', ] def clean_termination_b_id(self): @@ -235,7 +235,7 @@ class ConnectCableToPowerFeedForm(TenancyForm, CustomFieldModelForm): label='Region', required=False ) - termination_b_site_group = DynamicModelChoiceField( + termination_b_sitegroup = DynamicModelChoiceField( queryset=SiteGroup.objects.all(), label='Site group', required=False @@ -246,7 +246,7 @@ class ConnectCableToPowerFeedForm(TenancyForm, CustomFieldModelForm): required=False, query_params={ 'region_id': '$termination_b_region', - 'group_id': '$termination_b_site_group', + 'group_id': '$termination_b_sitegroup', } ) termination_b_location = DynamicModelChoiceField( @@ -281,8 +281,9 @@ class ConnectCableToPowerFeedForm(TenancyForm, CustomFieldModelForm): class Meta(ConnectCableToDeviceForm.Meta): fields = [ - 'termination_b_location', 'termination_b_powerpanel', 'termination_b_id', 'type', 'status', 'tenant_group', - 'tenant', 'label', 'color', 'length', 'length_unit', 'tags', + 'termination_b_region', 'termination_b_sitegroup', 'termination_b_site', 'termination_b_location', + 'termination_b_powerpanel', 'termination_b_id', 'type', 'status', 'tenant_group', 'tenant', 'label', + 'color', 'length', 'length_unit', 'tags', ] def clean_termination_b_id(self): diff --git a/netbox/templates/dcim/cable_connect.html b/netbox/templates/dcim/cable_connect.html index c5fba3ad0..1d50040c7 100644 --- a/netbox/templates/dcim/cable_connect.html +++ b/netbox/templates/dcim/cable_connect.html @@ -35,6 +35,12 @@ +
+ +
+ +
+
@@ -123,6 +129,9 @@ {% if 'termination_b_region' in form.fields %} {% render_field form.termination_b_region %} {% endif %} + {% if 'termination_b_sitegroup' in form.fields %} + {% render_field form.termination_b_sitegroup %} + {% endif %} {% if 'termination_b_site' in form.fields %} {% render_field form.termination_b_site %} {% endif %}