mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-09 00:58:16 -06:00
Merge 5ab1be5e83
into 982b9454f8
This commit is contained in:
commit
6dcd56dab7
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user