From 6a5764070def813c09ff7c267493aea5fd23e508 Mon Sep 17 00:00:00 2001 From: Joseph Kennedy Date: Thu, 31 Aug 2017 15:46:07 -0400 Subject: [PATCH] Add device_role filter --- netbox/dcim/filters.py | 15 ++++++--------- netbox/dcim/forms.py | 10 +++++----- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 9213aa338..3e7f2bbf9 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -591,11 +591,10 @@ class InterfaceListFilter(django_filters.FilterSet): # name='device_role', # label='Role (ID)', #) - #role = django_filters.ModelMultipleChoiceFilter( - # method='_filter_role', - # name='device_role', - # label='Role (slug)', - #) + role = django_filters.ModelMultipleChoiceFilter( + method='_filter_role', + label='Role (slug)', + ) type = django_filters.CharFilter( method='filter_type', label='Interface type', @@ -615,11 +614,9 @@ class InterfaceListFilter(django_filters.FilterSet): return queryset.filter(device__site__slug=value) def filter_role(self, queryset, name, value): - try: - device = Device.objects.filter(name=value).distinct() + if not value.strip(): return queryset - except Device.DoesNotExist: - return queryset.none() + return queryset.filter(device_role__slug=value) def filter_type(self, queryset, name, value): value = value.strip().lower() diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 68ed5eb45..c24289387 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -1621,11 +1621,11 @@ class InterfaceListFilterForm(BootstrapMixin, forms.Form): q = forms.CharField(required=False, label='Search') site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug') enabled = forms.ChoiceField(choices=add_blank_choice(IFACE_ENABLED_CHOICES), required=False) - #role = FilterChoiceField( - # required=False, - # queryset=DeviceRole.objects.annotate(filter_count=Count('devices')), - # to_field_name='slug' - #) + role = FilterChoiceField( + required=False, + queryset=DeviceRole.objects.annotate(filter_count=Count('devices')), + to_field_name='slug' + ) #