Parcourir la source

Implement contains filter for IPAM prefixes

Marcus Weiner il y a 6 mois
Parent
commit
0827198cad
1 fichiers modifiés avec 9 ajouts et 0 suppressions
  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()
     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)
 class RIRFilter(OrganizationalModelFilterMixin):