Switch to filter_site with object filter

This commit is contained in:
Joseph Kennedy 2017-08-31 04:35:07 -04:00
parent dfa06bdb4e
commit 48dae1ca15

View File

@ -582,15 +582,16 @@ class InterfaceListFilter(django_filters.FilterSet):
method='search', method='search',
label='Search', label='Search',
) )
#site_id = django_filters.ModelMultipleChoiceFilter( site_id = django_filters.ModelMultipleChoiceFilter(
# queryset=Device.objects.select_related('site'), name='site'
# label='Site (ID)', method='_filter_site',
#) label='Site (ID)',
#site = django_filters.ModelMultipleChoiceFilter( )
# name='site', site = django_filters.ModelMultipleChoiceFilter(
# method='_filter_site', name='site',
# label='Site name (slug)', method='_filter_site',
#) label='Site name (slug)',
)
#role_id = django_filters.ModelMultipleChoiceFilter( #role_id = django_filters.ModelMultipleChoiceFilter(
# method='_filter_role', # method='_filter_role',
# name='device_role', # name='device_role',
@ -616,17 +617,15 @@ class InterfaceListFilter(django_filters.FilterSet):
def filter_site(self, queryset, name, value): def filter_site(self, queryset, name, value):
try: try:
device = Device.objects.select_related('site').get(**{name: value}) device = Device.objects.filter(name=value).distinct()
ordering = device.site.interface_ordering return queryset
return queryset.filter(site=site).order_naturally(ordering)
except Device.DoesNotExist: except Device.DoesNotExist:
return queryset.none() return queryset.none()
def filter_role(self, queryset, name, value): def filter_role(self, queryset, name, value):
try: try:
device = Device.objects.select_related('device_role').get(**{name: value}) device = Device.objects.filter(name=value).distinct()
ordering = device.device_type.interface_ordering return queryset
return queryset.filter(device=device).order_naturally(ordering)
except Device.DoesNotExist: except Device.DoesNotExist:
return queryset.none() return queryset.none()