Clone all GraphQL objects to V1 versions

This commit is contained in:
Brian Tiemann
2025-10-23 20:19:16 -04:00
parent cee2a5e0ed
commit 867a01fae5
47 changed files with 6423 additions and 10 deletions

View 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_v1 import BaseFilterMixinV1
if TYPE_CHECKING:
from .enums import *
__all__ = (
'WirelessAuthenticationBaseFilterMixinV1',
)
@dataclass
class WirelessAuthenticationBaseFilterMixinV1(BaseFilterMixinV1):
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()

View File

@@ -0,0 +1,72 @@
from typing import Annotated, TYPE_CHECKING
import strawberry
import strawberry_django
from strawberry.scalars import ID
from strawberry_django import FilterLookup
from dcim.graphql.filter_mixins_v1 import ScopedFilterMixinV1
from netbox.graphql.filter_mixins_v1 import (
DistanceFilterMixinV1, PrimaryModelFilterMixinV1, NestedGroupModelFilterMixinV1
)
from tenancy.graphql.filter_mixins_v1 import TenancyFilterMixinV1
from wireless import models
from .filter_mixins_v1 import WirelessAuthenticationBaseFilterMixinV1
if TYPE_CHECKING:
from dcim.graphql.filters_v1 import InterfaceFilterV1
from ipam.graphql.filters_v1 import VLANFilterV1
from .enums import *
__all__ = (
'WirelessLANGroupFilterV1',
'WirelessLANFilterV1',
'WirelessLinkFilterV1',
)
@strawberry_django.filter_type(models.WirelessLANGroup, lookups=True)
class WirelessLANGroupFilterV1(NestedGroupModelFilterMixinV1):
pass
@strawberry_django.filter_type(models.WirelessLAN, lookups=True)
class WirelessLANFilterV1(
WirelessAuthenticationBaseFilterMixinV1,
ScopedFilterMixinV1,
TenancyFilterMixinV1,
PrimaryModelFilterMixinV1
):
ssid: FilterLookup[str] | None = strawberry_django.filter_field()
status: Annotated['WirelessLANStatusEnum', strawberry.lazy('wireless.graphql.enums')] | None = (
strawberry_django.filter_field()
)
group: Annotated['WirelessLANGroupFilterV1', strawberry.lazy('wireless.graphql.filters_v1')] | None = (
strawberry_django.filter_field()
)
group_id: ID | None = strawberry_django.filter_field()
vlan: Annotated['VLANFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
strawberry_django.filter_field()
)
vlan_id: ID | None = strawberry_django.filter_field()
@strawberry_django.filter_type(models.WirelessLink, lookups=True)
class WirelessLinkFilterV1(
WirelessAuthenticationBaseFilterMixinV1,
DistanceFilterMixinV1,
TenancyFilterMixinV1,
PrimaryModelFilterMixinV1
):
interface_a: Annotated['InterfaceFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
strawberry_django.filter_field()
)
interface_a_id: ID | None = strawberry_django.filter_field()
interface_b: Annotated['InterfaceFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | 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()
)

View File

@@ -0,0 +1,18 @@
from typing import List
import strawberry
import strawberry_django
from .types_v1 import *
@strawberry.type(name="Query")
class WirelessQueryV1:
wireless_lan: WirelessLANTypeV1 = strawberry_django.field()
wireless_lan_list: List[WirelessLANTypeV1] = strawberry_django.field()
wireless_lan_group: WirelessLANGroupTypeV1 = strawberry_django.field()
wireless_lan_group_list: List[WirelessLANGroupTypeV1] = strawberry_django.field()
wireless_link: WirelessLinkTypeV1 = strawberry_django.field()
wireless_link_list: List[WirelessLinkTypeV1] = strawberry_django.field()

View File

@@ -0,0 +1,71 @@
from typing import Annotated, List, TYPE_CHECKING, Union
import strawberry
import strawberry_django
from netbox.graphql.types_v1 import OrganizationalObjectTypeV1, NetBoxObjectTypeV1
from wireless import models
from .filters_v1 import *
if TYPE_CHECKING:
from dcim.graphql.types_v1 import (
DeviceTypeV1, InterfaceTypeV1, LocationTypeV1, RegionTypeV1, SiteGroupTypeV1, SiteTypeV1
)
from ipam.graphql.types_v1 import VLANTypeV1
from tenancy.graphql.types_v1 import TenantTypeV1
__all__ = (
'WirelessLANTypeV1',
'WirelessLANGroupTypeV1',
'WirelessLinkTypeV1',
)
@strawberry_django.type(
models.WirelessLANGroup,
fields='__all__',
filters=WirelessLANGroupFilterV1,
pagination=True
)
class WirelessLANGroupTypeV1(OrganizationalObjectTypeV1):
parent: Annotated["WirelessLANGroupTypeV1", strawberry.lazy('wireless.graphql.types_v1')] | None
wireless_lans: List[Annotated["WirelessLANTypeV1", strawberry.lazy('wireless.graphql.types_v1')]]
children: List[Annotated["WirelessLANGroupTypeV1", strawberry.lazy('wireless.graphql.types_v1')]]
@strawberry_django.type(
models.WirelessLAN,
exclude=['scope_type', 'scope_id', '_location', '_region', '_site', '_site_group'],
filters=WirelessLANFilterV1,
pagination=True
)
class WirelessLANTypeV1(NetBoxObjectTypeV1):
group: Annotated["WirelessLANGroupTypeV1", strawberry.lazy('wireless.graphql.types_v1')] | None
vlan: Annotated["VLANTypeV1", strawberry.lazy('ipam.graphql.types_v1')] | None
tenant: Annotated["TenantTypeV1", strawberry.lazy('tenancy.graphql.types_v1')] | None
interfaces: List[Annotated["InterfaceTypeV1", strawberry.lazy('dcim.graphql.types_v1')]]
@strawberry_django.field
def scope(self) -> Annotated[Union[
Annotated["LocationTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
Annotated["RegionTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
Annotated["SiteGroupTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
Annotated["SiteTypeV1", strawberry.lazy('dcim.graphql.types_v1')],
], strawberry.union("WirelessLANScopeTypeV1")] | None:
return self.scope
@strawberry_django.type(
models.WirelessLink,
fields='__all__',
filters=WirelessLinkFilterV1,
pagination=True
)
class WirelessLinkTypeV1(NetBoxObjectTypeV1):
interface_a: Annotated["InterfaceTypeV1", strawberry.lazy('dcim.graphql.types_v1')]
interface_b: Annotated["InterfaceTypeV1", strawberry.lazy('dcim.graphql.types_v1')]
tenant: Annotated["TenantTypeV1", strawberry.lazy('tenancy.graphql.types_v1')] | None
_interface_a_device: Annotated["DeviceTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None
_interface_b_device: Annotated["DeviceTypeV1", strawberry.lazy('dcim.graphql.types_v1')] | None