Просмотр исходного кода

Closes #8197: Allow filtering sites by group when connecting a cable

jeremystretch 4 лет назад
Родитель
Сommit
ecb9fc65b7

+ 1 - 0
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

+ 15 - 14
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):

+ 9 - 0
netbox/templates/dcim/cable_connect.html

@@ -35,6 +35,12 @@
                                   <input class="form-control" value="{{ termination_a.device.site.region }}" disabled />
                               </div>
                           </div>
+                          <div class="row mb-3">
+                              <label class="col-sm-3 col-form-label text-lg-end">Site Group</label>
+                              <div class="col">
+                                  <input class="form-control" value="{{ termination_a.device.site.group }}" disabled />
+                              </div>
+                          </div>
                           <div class="row mb-3">
                               <label class="col-sm-3 col-form-label text-lg-end">Site</label>
                               <div class="col">
@@ -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 %}