From f2c49063f85e1b0a3a42bfe1e16ac5ffb4939bc7 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 31 Dec 2019 11:25:42 -0500 Subject: [PATCH] Fixes #3809: Filter platform by manufacturer when editing devices --- docs/release-notes/version-2.6.md | 1 + netbox/dcim/forms.py | 8 ++++++-- netbox/project-static/js/forms.js | 10 +++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/release-notes/version-2.6.md b/docs/release-notes/version-2.6.md index a516034aa..3acbe6f09 100644 --- a/docs/release-notes/version-2.6.md +++ b/docs/release-notes/version-2.6.md @@ -11,6 +11,7 @@ * [#3695](https://github.com/netbox-community/netbox/issues/3695) - Include A/Z termination sites for circuits in global search * [#3712](https://github.com/netbox-community/netbox/issues/3712) - Scrolling to target (hash) did not account for the header size * [#3780](https://github.com/netbox-community/netbox/issues/3780) - Fix AttributeError exception in API docs +* [#3809](https://github.com/netbox-community/netbox/issues/3809) - Filter platform by manufacturer when editing devices --- diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 66c98c022..7bbcc0122 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -1339,7 +1339,8 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm): widget=APISelect( api_url="/api/dcim/manufacturers/", filter_for={ - 'device_type': 'manufacturer_id' + 'device_type': 'manufacturer_id', + 'platform': 'manufacturer_id' } ) ) @@ -1408,7 +1409,10 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm): ), 'status': StaticSelect2(), 'platform': APISelect( - api_url="/api/dcim/platforms/" + api_url="/api/dcim/platforms/", + additional_query_params={ + "manufacturer_id": "null" + } ), 'primary_ip4': StaticSelect2(), 'primary_ip6': StaticSelect2(), diff --git a/netbox/project-static/js/forms.js b/netbox/project-static/js/forms.js index bcc6c4d31..9303e3013 100644 --- a/netbox/project-static/js/forms.js +++ b/netbox/project-static/js/forms.js @@ -184,7 +184,15 @@ $(document).ready(function() { $.each(element.attributes, function(index, attr){ if (attr.name.includes("data-additional-query-param-")){ var param_name = attr.name.split("data-additional-query-param-")[1]; - parameters[param_name] = attr.value; + if (param_name in parameters) { + if (Array.isArray(parameters[param_name])) { + parameters[param_name].push(attr.value) + } else { + parameters[param_name] = [parameters[param_name], attr.value] + } + } else { + parameters[param_name] = attr.value; + } } });