Fixes #1388: Fixed server error when searching globally for IPs/prefixes (rolled back #1379)

This commit is contained in:
Jeremy Stretch 2017-08-03 09:26:28 -04:00
parent 930b15ae09
commit 3aa072b437

View File

@ -448,20 +448,13 @@ class DeviceFilter(CustomFieldFilterSet, django_filters.FilterSet):
def search(self, queryset, name, value): def search(self, queryset, name, value):
if not value.strip(): if not value.strip():
return queryset return queryset
qs_filter = ( return queryset.filter(
Q(name__icontains=value) | Q(name__icontains=value) |
Q(serial__icontains=value.strip()) | Q(serial__icontains=value.strip()) |
Q(inventory_items__serial__icontains=value.strip()) | Q(inventory_items__serial__icontains=value.strip()) |
Q(asset_tag=value.strip()) | Q(asset_tag=value.strip()) |
Q(comments__icontains=value) Q(comments__icontains=value)
) ).distinct()
# If the query value looks like a MAC address, search interfaces as well.
try:
mac = EUI(value.strip())
qs_filter |= Q(interfaces__mac_address=mac)
except AddrFormatError:
pass
return queryset.filter(qs_filter).distinct()
def _mac_address(self, queryset, name, value): def _mac_address(self, queryset, name, value):
value = value.strip() value = value.strip()