From 00aaf500de1ac67bcba46fbcc75d9ea51cf6ddca Mon Sep 17 00:00:00 2001 From: dansheps Date: Wed, 27 Feb 2019 14:46:11 -0600 Subject: [PATCH] Fixes #2781: Fixes filter by regions on site and device list * Add Device filter --- netbox/dcim/filters.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index b8086322d..d06a65ad3 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -98,16 +98,6 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet): pass return queryset.filter(qs_filter) - def filter_region(self, queryset, name, value): - try: - region = Region.objects.get(**{name: value}) - except ObjectDoesNotExist: - return queryset.none() - return queryset.filter( - Q(region=region) | - Q(region__in=region.get_descendants()) - ) - class RackGroupFilter(NameSlugSearchFilterSet): site_id = django_filters.ModelMultipleChoiceFilter( @@ -516,14 +506,15 @@ class DeviceFilter(CustomFieldFilterSet): ) name = NullableCharFieldFilter() asset_tag = NullableCharFieldFilter() - region_id = django_filters.NumberFilter( - method='filter_region', - field_name='pk', + region_id = TreeNodeMultipleChoiceFilter( + queryset=Region.objects.all(), + field_name='region__in', label='Region (ID)', ) - region = django_filters.CharFilter( - method='filter_region', - field_name='slug', + region = TreeNodeMultipleChoiceFilter( + queryset=Region.objects.all(), + field_name='region__in', + to_field_name='slug', label='Region (slug)', ) site_id = django_filters.ModelMultipleChoiceFilter(