mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-17 22:49:59 +02:00
17
netbox/wireless/graphql/enums.py
Normal file
17
netbox/wireless/graphql/enums.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import strawberry
|
||||
|
||||
from wireless.choices import *
|
||||
|
||||
__all__ = (
|
||||
'WirelessAuthCipherEnum',
|
||||
'WirelessAuthTypeEnum',
|
||||
'WirelessChannelEnum',
|
||||
'WirelessLANStatusEnum',
|
||||
'WirelessRoleEnum',
|
||||
)
|
||||
|
||||
WirelessAuthCipherEnum = strawberry.enum(WirelessAuthCipherChoices.as_enum())
|
||||
WirelessAuthTypeEnum = strawberry.enum(WirelessAuthTypeChoices.as_enum())
|
||||
WirelessChannelEnum = strawberry.enum(WirelessChannelChoices.as_enum())
|
||||
WirelessLANStatusEnum = strawberry.enum(WirelessLANStatusChoices.as_enum())
|
||||
WirelessRoleEnum = strawberry.enum(WirelessRoleChoices.as_enum())
|
||||
26
netbox/wireless/graphql/filter_mixins.py
Normal file
26
netbox/wireless/graphql/filter_mixins.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry_django import FilterLookup
|
||||
|
||||
from core.graphql.filter_mixins import BaseFilterMixin
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from .enums import *
|
||||
|
||||
__all__ = (
|
||||
'WirelessAuthenticationBaseFilterMixin',
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class WirelessAuthenticationBaseFilterMixin(BaseFilterMixin):
|
||||
auth_type: Annotated['WirelessAuthTypeEnum', strawberry.lazy('wireless.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
auth_cipher: Annotated['WirelessAuthCipherEnum', strawberry.lazy('wireless.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
auth_psk: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
@@ -1,7 +1,20 @@
|
||||
import strawberry_django
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
from netbox.graphql.filter_mixins import autotype_decorator, BaseFilterMixin
|
||||
from wireless import filtersets, models
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry.scalars import ID
|
||||
from strawberry_django import FilterLookup
|
||||
|
||||
from dcim.graphql.filter_mixins import ScopedFilterMixin
|
||||
from netbox.graphql.filter_mixins import DistanceFilterMixin, PrimaryModelFilterMixin, NestedGroupModelFilterMixin
|
||||
from tenancy.graphql.filter_mixins import TenancyFilterMixin
|
||||
from wireless import models
|
||||
from .filter_mixins import WirelessAuthenticationBaseFilterMixin
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dcim.graphql.filters import InterfaceFilter
|
||||
from ipam.graphql.filters import VLANFilter
|
||||
from .enums import *
|
||||
|
||||
__all__ = (
|
||||
'WirelessLANGroupFilter',
|
||||
@@ -11,18 +24,45 @@ __all__ = (
|
||||
|
||||
|
||||
@strawberry_django.filter(models.WirelessLANGroup, lookups=True)
|
||||
@autotype_decorator(filtersets.WirelessLANGroupFilterSet)
|
||||
class WirelessLANGroupFilter(BaseFilterMixin):
|
||||
class WirelessLANGroupFilter(NestedGroupModelFilterMixin):
|
||||
pass
|
||||
|
||||
|
||||
@strawberry_django.filter(models.WirelessLAN, lookups=True)
|
||||
@autotype_decorator(filtersets.WirelessLANFilterSet)
|
||||
class WirelessLANFilter(BaseFilterMixin):
|
||||
pass
|
||||
class WirelessLANFilter(
|
||||
WirelessAuthenticationBaseFilterMixin,
|
||||
ScopedFilterMixin,
|
||||
TenancyFilterMixin,
|
||||
PrimaryModelFilterMixin
|
||||
):
|
||||
ssid: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
status: Annotated['WirelessLANStatusEnum', strawberry.lazy('wireless.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
group: Annotated['WirelessLANGroupFilter', strawberry.lazy('wireless.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
group_id: ID | None = strawberry_django.filter_field()
|
||||
vlan: Annotated['VLANFilter', strawberry.lazy('ipam.graphql.filters')] | None = strawberry_django.filter_field()
|
||||
vlan_id: ID | None = strawberry_django.filter_field()
|
||||
|
||||
|
||||
@strawberry_django.filter(models.WirelessLink, lookups=True)
|
||||
@autotype_decorator(filtersets.WirelessLinkFilterSet)
|
||||
class WirelessLinkFilter(BaseFilterMixin):
|
||||
pass
|
||||
class WirelessLinkFilter(
|
||||
WirelessAuthenticationBaseFilterMixin,
|
||||
DistanceFilterMixin,
|
||||
TenancyFilterMixin,
|
||||
PrimaryModelFilterMixin
|
||||
):
|
||||
interface_a: Annotated['InterfaceFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
interface_a_id: ID | None = strawberry_django.filter_field()
|
||||
interface_b: Annotated['InterfaceFilter', strawberry.lazy('dcim.graphql.filters')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
interface_b_id: ID | None = strawberry_django.filter_field()
|
||||
ssid: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
status: Annotated['WirelessLANStatusEnum', strawberry.lazy('wireless.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from typing import Annotated, List, Union
|
||||
from typing import Annotated, List, TYPE_CHECKING, Union
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
@@ -7,6 +7,11 @@ from netbox.graphql.types import OrganizationalObjectType, NetBoxObjectType
|
||||
from wireless import models
|
||||
from .filters import *
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from dcim.graphql.types import DeviceType, InterfaceType, LocationType, RegionType, SiteGroupType, SiteType
|
||||
from ipam.graphql.types import VLANType
|
||||
from tenancy.graphql.types import TenantType
|
||||
|
||||
__all__ = (
|
||||
'WirelessLANType',
|
||||
'WirelessLANGroupType',
|
||||
@@ -28,7 +33,7 @@ class WirelessLANGroupType(OrganizationalObjectType):
|
||||
|
||||
@strawberry_django.type(
|
||||
models.WirelessLAN,
|
||||
exclude=('scope_type', 'scope_id', '_location', '_region', '_site', '_site_group'),
|
||||
exclude=['scope_type', 'scope_id', '_location', '_region', '_site', '_site_group'],
|
||||
filters=WirelessLANFilter
|
||||
)
|
||||
class WirelessLANType(NetBoxObjectType):
|
||||
|
||||
Reference in New Issue
Block a user