From a71a59c088a301027de44ad8abb88b2d956424e9 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Mon, 13 Mar 2023 10:00:05 -0400 Subject: [PATCH] Fixes #11631: Fix filtering changelog & journal entries by multiple content type IDs --- docs/release-notes/version-3.4.md | 1 + netbox/extras/filtersets.py | 6 ++++++ netbox/extras/tests/test_filtersets.py | 6 ++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/version-3.4.md b/docs/release-notes/version-3.4.md index 2bd0ee40b..e65d24996 100644 --- a/docs/release-notes/version-3.4.md +++ b/docs/release-notes/version-3.4.md @@ -17,6 +17,7 @@ * [#11470](https://github.com/netbox-community/netbox/issues/11470) - Avoid raising exception when filtering IPs by an invalid address * [#11565](https://github.com/netbox-community/netbox/issues/11565) - Apply custom field defaults to IP address created during FHRP group creation +* [#11631](https://github.com/netbox-community/netbox/issues/11631) - Fix filtering changelog & journal entries by multiple content type IDs * [#11758](https://github.com/netbox-community/netbox/issues/11758) - Support non-URL-safe characters in plugin menu titles * [#11796](https://github.com/netbox-community/netbox/issues/11796) - When importing devices, restrict rack by location only if the location field is specified * [#11819](https://github.com/netbox-community/netbox/issues/11819) - Fix filtering of cable terminations by object type diff --git a/netbox/extras/filtersets.py b/netbox/extras/filtersets.py index 74b98ccf6..e2ccf1d34 100644 --- a/netbox/extras/filtersets.py +++ b/netbox/extras/filtersets.py @@ -210,6 +210,9 @@ class ImageAttachmentFilterSet(BaseFilterSet): class JournalEntryFilterSet(NetBoxModelFilterSet): created = django_filters.DateTimeFromToRangeFilter() assigned_object_type = ContentTypeFilter() + assigned_object_type_id = django_filters.ModelMultipleChoiceFilter( + queryset=ContentType.objects.all() + ) created_by_id = django_filters.ModelMultipleChoiceFilter( queryset=User.objects.all(), label=_('User (ID)'), @@ -458,6 +461,9 @@ class ObjectChangeFilterSet(BaseFilterSet): ) time = django_filters.DateTimeFromToRangeFilter() changed_object_type = ContentTypeFilter() + changed_object_type_id = django_filters.ModelMultipleChoiceFilter( + queryset=ContentType.objects.all() + ) user_id = django_filters.ModelMultipleChoiceFilter( queryset=User.objects.all(), label=_('User (ID)'), diff --git a/netbox/extras/tests/test_filtersets.py b/netbox/extras/tests/test_filtersets.py index 3c8899b5e..d537b733a 100644 --- a/netbox/extras/tests/test_filtersets.py +++ b/netbox/extras/tests/test_filtersets.py @@ -502,7 +502,7 @@ class JournalEntryTestCase(TestCase, ChangeLoggedFilterSetTests): def test_assigned_object_type(self): params = {'assigned_object_type': 'dcim.site'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - params = {'assigned_object_type_id': ContentType.objects.get(app_label='dcim', model='site').pk} + params = {'assigned_object_type_id': [ContentType.objects.get(app_label='dcim', model='site').pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) def test_assigned_object(self): @@ -876,7 +876,5 @@ class ObjectChangeTestCase(TestCase, BaseFilterSetTests): def test_changed_object_type(self): params = {'changed_object_type': 'dcim.site'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3) - - def test_changed_object_type_id(self): - params = {'changed_object_type_id': ContentType.objects.get(app_label='dcim', model='site').pk} + params = {'changed_object_type_id': [ContentType.objects.get(app_label='dcim', model='site').pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)