|
@@ -167,6 +167,17 @@ class PrefixFilter(CustomFieldFilterSet, django_filters.FilterSet):
|
|
|
model = Prefix
|
|
|
fields = ['family', 'is_pool']
|
|
|
|
|
|
+ def search(self, queryset, name, value):
|
|
|
+ if not value.strip():
|
|
|
+ return queryset
|
|
|
+ qs_filter = Q(description__icontains=value)
|
|
|
+ try:
|
|
|
+ prefix = str(IPNetwork(value.strip()).cidr)
|
|
|
+ qs_filter |= Q(prefix__net_contains_or_equals=prefix)
|
|
|
+ except (AddrFormatError, ValueError):
|
|
|
+ pass
|
|
|
+ return queryset.filter(qs_filter)
|
|
|
+
|
|
|
def search_within(self, queryset, name, value):
|
|
|
value = value.strip()
|
|
|
if not value:
|