mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-08 16:48: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',
|
||||
label='Search',
|
||||
)
|
||||
address = django_filters.CharFilter(
|
||||
method='search_by_address',
|
||||
label='Exact address match',
|
||||
)
|
||||
parent = django_filters.CharFilter(
|
||||
method='search_by_parent',
|
||||
label='Parent prefix',
|
||||
@ -308,6 +312,16 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
||||
)
|
||||
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):
|
||||
value = value.strip()
|
||||
if not value:
|
||||
|
Loading…
Reference in New Issue
Block a user