Преглед на файлове

Implement contains filter for IPAM prefixes

Marcus Weiner преди 8 месеца
родител
ревизия
0827198cad
променени са 1 файла, в които са добавени 9 реда и са изтрити 0 реда
  1. 9 0
      netbox/ipam/graphql/filters.py

+ 9 - 0
netbox/ipam/graphql/filters.py

@@ -238,6 +238,15 @@ class PrefixFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, Pr
     is_pool: FilterLookup[bool] | None = strawberry_django.filter_field()
     is_pool: FilterLookup[bool] | None = strawberry_django.filter_field()
     mark_utilized: FilterLookup[bool] | None = strawberry_django.filter_field()
     mark_utilized: FilterLookup[bool] | None = strawberry_django.filter_field()
 
 
+    @strawberry_django.filter_field()
+    def contains(self, value: list[str], prefix) -> Q:
+        if not value:
+            return Q()
+        q = Q()
+        for subnet in value:
+            query = str(netaddr.IPNetwork(subnet.strip()).cidr)
+            q |= Q(prefix__net_contains=query)
+        return q
 
 
 @strawberry_django.filter_type(models.RIR, lookups=True)
 @strawberry_django.filter_type(models.RIR, lookups=True)
 class RIRFilter(OrganizationalModelFilterMixin):
 class RIRFilter(OrganizationalModelFilterMixin):