Explorar o código

Merge pull request #3845 from hSaria/3187-elevation-rack-filter

Fixes #3187: Elevation rack filter
Jeremy Stretch %!s(int64=6) %!d(string=hai) anos
pai
achega
d4df965f46
Modificáronse 3 ficheiros con 37 adicións e 1 borrados
  1. 8 0
      docs/release-notes/version-2.6.md
  2. 28 0
      netbox/dcim/forms.py
  3. 1 1
      netbox/dcim/views.py

+ 8 - 0
docs/release-notes/version-2.6.md

@@ -1,3 +1,11 @@
+# v2.6.12 (FUTURE)
+
+## Enhancements
+
+* [#3187](https://github.com/netbox-community/netbox/issues/3187) - Add rack selection field to rack elevations
+
+---
+
 # v2.6.11 (2020-01-03)
 
 ## Bug Fixes

+ 28 - 0
netbox/dcim/forms.py

@@ -703,6 +703,34 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
     )
 
 
+#
+# Rack elevations
+#
+
+class RackElevationFilterForm(RackFilterForm):
+    field_order = ['q', 'region', 'site', 'group_id', 'id', 'status', 'role', 'tenant_group', 'tenant']
+    id = ChainedModelChoiceField(
+        queryset=Rack.objects.all(),
+        label='Rack',
+        chains=(
+            ('site', 'site'),
+            ('group_id', 'group_id'),
+        ),
+        required=False,
+        widget=APISelectMultiple(
+            api_url='/api/dcim/racks/',
+            display_field='display_name',
+        )
+    )
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+        # Filter the rack field based on the site and group
+        self.fields['site'].widget.add_filter_for('id', 'site')
+        self.fields['group_id'].widget.add_filter_for('id', 'group_id')
+
+
 #
 # Rack reservations
 #

+ 1 - 1
netbox/dcim/views.py

@@ -388,7 +388,7 @@ class RackElevationListView(PermissionRequiredMixin, View):
             'page': page,
             'total_count': total_count,
             'face_id': face_id,
-            'filter_form': forms.RackFilterForm(request.GET),
+            'filter_form': forms.RackElevationFilterForm(request.GET),
         })