This commit is contained in:
Marek Isalski 2018-06-29 17:55:07 +00:00 committed by GitHub
commit 6dcd56dab7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -230,6 +230,10 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
method='search', method='search',
label='Search', label='Search',
) )
address = django_filters.CharFilter(
method='search_by_address',
label='Exact address match',
)
parent = django_filters.CharFilter( parent = django_filters.CharFilter(
method='search_by_parent', method='search_by_parent',
label='Parent prefix', label='Parent prefix',
@ -308,6 +312,16 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
) )
return queryset.filter(qs_filter) return queryset.filter(qs_filter)
def search_by_address(self, queryset, name, value):
value = value.strip()
if not value:
return queryset
try:
query = str(netaddr.IPNetwork(value.strip()).ip)
return queryset.filter(address__net_contains_or_equals=query, address__startswith=query + "/")
except (AddrFormatError, ValueError):
return queryset.none()
def search_by_parent(self, queryset, name, value): def search_by_parent(self, queryset, name, value):
value = value.strip() value = value.strip()
if not value: if not value: