From 07f2cdac580b1e49d809a23038701e0322a23484 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 7 Mar 2022 13:40:49 -0500 Subject: [PATCH] Fixes #8810: Enable filtering modules by type --- docs/release-notes/version-3.2.md | 1 + netbox/dcim/filtersets.py | 11 +++++++++++ netbox/dcim/tests/test_filtersets.py | 7 +++++++ 3 files changed, 19 insertions(+) diff --git a/docs/release-notes/version-3.2.md b/docs/release-notes/version-3.2.md index 8b3574699..80f73839e 100644 --- a/docs/release-notes/version-3.2.md +++ b/docs/release-notes/version-3.2.md @@ -159,6 +159,7 @@ Where it is desired to limit the range of available VLANs within a group, users * [#8764](https://github.com/netbox-community/netbox/issues/8764) - Correct view name resolution for dynamic form fields * [#8791](https://github.com/netbox-community/netbox/issues/8791) - Fix display of form validation failures during device component creation * [#8792](https://github.com/netbox-community/netbox/issues/8792) - Fix creation of circuit terminations via UI +* [#8810](https://github.com/netbox-community/netbox/issues/8810) - Enable filtering modules by type * [#8815](https://github.com/netbox-community/netbox/issues/8815) - Fix display of custom object fields in table columns ### Other Changes diff --git a/netbox/dcim/filtersets.py b/netbox/dcim/filtersets.py index 307789435..1a5ac1336 100644 --- a/netbox/dcim/filtersets.py +++ b/netbox/dcim/filtersets.py @@ -972,6 +972,17 @@ class ModuleFilterSet(NetBoxModelFilterSet): to_field_name='slug', label='Manufacturer (slug)', ) + module_type_id = django_filters.ModelMultipleChoiceFilter( + field_name='module_type', + queryset=ModuleType.objects.all(), + label='Module type (ID)', + ) + module_type = django_filters.ModelMultipleChoiceFilter( + field_name='module_type__model', + queryset=ModuleType.objects.all(), + to_field_name='model', + label='Module type (model)', + ) device_id = django_filters.ModelMultipleChoiceFilter( queryset=Device.objects.all(), label='Device (ID)', diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 1d9f76d98..2e2c3baf7 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -1803,6 +1803,13 @@ class ModuleTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'manufacturer': [manufacturers[0].slug, manufacturers[1].slug]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + def test_module_type(self): + module_types = ModuleType.objects.all()[:2] + params = {'module_type_id': [module_types[0].pk, module_types[1].pk]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + params = {'module_type': [module_types[0].model, module_types[1].model]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6) + def test_device(self): device_types = Device.objects.all()[:2] params = {'device_id': [device_types[0].pk, device_types[1].pk]}