Introduce ScopedFilterMixin

This commit is contained in:
Jeremy Stretch 2025-03-04 15:26:28 -05:00
parent 5fcf32cc9e
commit 380c9c1041
4 changed files with 26 additions and 20 deletions

View File

@ -14,16 +14,25 @@ if TYPE_CHECKING:
from extras.graphql.filters import *
from ipam.graphql.filters import *
__all__ = [
'ComponentModelFilterMixin',
'ModularComponentModelFilterMixin',
__all__ = (
'CabledObjectModelFilterMixin',
'ComponentModelFilterMixin',
'ComponentTemplateFilterMixin',
'ModularComponentTemplateFilterMixin',
'RenderConfigFilterMixin',
'InterfaceBaseFilterMixin',
'ModularComponentModelFilterMixin',
'ModularComponentTemplateFilterMixin',
'RackBaseFilterMixin',
]
'RenderConfigFilterMixin',
'ScopedFilterMixin',
)
@dataclass
class ScopedFilterMixin(BaseFilterMixin):
scope_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
)
scope_id: ID | None = strawberry_django.filter_field()
@dataclass

View File

@ -11,9 +11,9 @@ from strawberry_django import (
DateFilterLookup,
)
from core.graphql.filter_mixins import *
from dcim.graphql.filter_mixins import ScopedFilterMixin
from netbox.graphql.filter_mixins import *
from tenancy.graphql.filter_mixins import *
from ipam import models
from ipam.graphql.filter_mixins import *
@ -191,7 +191,7 @@ class IPRangeFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMi
@strawberry_django.filter(models.Prefix, lookups=True)
class PrefixFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
class PrefixFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
prefix: FilterLookup[str] | None = strawberry_django.filter_field()
vrf: Annotated['VRFFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
vrf_id: ID | None = strawberry_django.filter_field()
@ -204,10 +204,6 @@ class PrefixFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMix
role_id: ID | None = strawberry_django.filter_field()
is_pool: FilterLookup[bool] | None = strawberry_django.filter_field()
mark_utilized: FilterLookup[bool] | None = strawberry_django.filter_field()
scope_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
)
scope_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter(models.RIR, lookups=True)
@ -278,12 +274,7 @@ class VLANFilter(TenancyFilterMixin, PrimaryModelFilterMixin):
@strawberry_django.filter(models.VLANGroup, lookups=True)
class VLANGroupFilter(OrganizationalModelFilterMixin):
scope_type: Annotated['ContentTypeFilter', strawberry.lazy('core.graphql.filters')] | None = (
strawberry_django.filter_field()
)
scope_type_id: ID | None = strawberry_django.filter_field()
scope_id: ID | None = strawberry_django.filter_field()
class VLANGroupFilter(ScopedFilterMixin, OrganizationalModelFilterMixin):
vid_ranges: Annotated['IntegerArrayLookup', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
strawberry_django.filter_field()
)

View File

@ -40,7 +40,7 @@ __all__ = (
@strawberry_django.filter(models.Cluster, lookups=True)
class ClusterFilter(ContactFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
class ClusterFilter(ContactFilterMixin, ScopedFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
name: FilterLookup[str] | None = strawberry_django.filter_field()
type: Annotated['ClusterTypeFilter', strawberry.lazy('virtualization.graphql.filters')] | None = (
strawberry_django.filter_field()

View File

@ -5,6 +5,7 @@ import strawberry_django
from strawberry_django import (
FilterLookup,
)
from dcim.graphql.filter_mixins import ScopedFilterMixin
from extras.graphql.filter_mixins import *
from netbox.graphql.filter_mixins import *
from core.graphql.filter_mixins import *
@ -41,7 +42,12 @@ class WirelessLANGroupFilter(NestedGroupModelFilterMixin):
@strawberry_django.filter(models.WirelessLAN, lookups=True)
class WirelessLANFilter(WirelessAuthenticationBaseFilterMixin, TenancyFilterMixin, PrimaryModelFilterMixin):
class WirelessLANFilter(
WirelessAuthenticationBaseFilterMixin,
ScopedFilterMixin,
TenancyFilterMixin,
PrimaryModelFilterMixin
):
ssid: FilterLookup[str] | None = strawberry_django.filter_field()
group: Annotated['WirelessLANGroupFilter', strawberry.lazy('wireless.graphql.filters')] | None = (
strawberry_django.filter_field()