Add device_role filter

This commit is contained in:
Joseph Kennedy 2017-08-31 15:46:07 -04:00
parent d7f52bc24b
commit 6a5764070d
2 changed files with 11 additions and 14 deletions

View File

@ -591,11 +591,10 @@ class InterfaceListFilter(django_filters.FilterSet):
# name='device_role', # name='device_role',
# label='Role (ID)', # label='Role (ID)',
#) #)
#role = django_filters.ModelMultipleChoiceFilter( role = django_filters.ModelMultipleChoiceFilter(
# method='_filter_role', method='_filter_role',
# name='device_role', label='Role (slug)',
# label='Role (slug)', )
#)
type = django_filters.CharFilter( type = django_filters.CharFilter(
method='filter_type', method='filter_type',
label='Interface type', label='Interface type',
@ -615,11 +614,9 @@ class InterfaceListFilter(django_filters.FilterSet):
return queryset.filter(device__site__slug=value) return queryset.filter(device__site__slug=value)
def filter_role(self, queryset, name, value): def filter_role(self, queryset, name, value):
try: if not value.strip():
device = Device.objects.filter(name=value).distinct()
return queryset return queryset
except Device.DoesNotExist: return queryset.filter(device_role__slug=value)
return queryset.none()
def filter_type(self, queryset, name, value): def filter_type(self, queryset, name, value):
value = value.strip().lower() value = value.strip().lower()

View File

@ -1621,11 +1621,11 @@ class InterfaceListFilterForm(BootstrapMixin, forms.Form):
q = forms.CharField(required=False, label='Search') q = forms.CharField(required=False, label='Search')
site = forms.ModelChoiceField(required=False, queryset=Site.objects.all(), to_field_name='slug') 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) enabled = forms.ChoiceField(choices=add_blank_choice(IFACE_ENABLED_CHOICES), required=False)
#role = FilterChoiceField( role = FilterChoiceField(
# required=False, required=False,
# queryset=DeviceRole.objects.annotate(filter_count=Count('devices')), queryset=DeviceRole.objects.annotate(filter_count=Count('devices')),
# to_field_name='slug' to_field_name='slug'
#) )
# #