types.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from typing import Annotated, List
  2. import strawberry
  3. import strawberry_django
  4. from netbox.graphql.types import OrganizationalObjectType, NetBoxObjectType
  5. from wireless import models
  6. from .filters import *
  7. __all__ = (
  8. 'WirelessLANType',
  9. 'WirelessLANGroupType',
  10. 'WirelessLinkType',
  11. )
  12. @strawberry_django.type(
  13. models.WirelessLANGroup,
  14. fields='__all__',
  15. filters=WirelessLANGroupFilter
  16. )
  17. class WirelessLANGroupType(OrganizationalObjectType):
  18. parent: Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')] | None
  19. wireless_lans: List[Annotated["WirelessLANType", strawberry.lazy('wireless.graphql.types')]]
  20. children: List[Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')]]
  21. @strawberry_django.type(
  22. models.WirelessLAN,
  23. fields='__all__',
  24. filters=WirelessLANFilter
  25. )
  26. class WirelessLANType(NetBoxObjectType):
  27. group: Annotated["WirelessLANGroupType", strawberry.lazy('wireless.graphql.types')] | None
  28. vlan: Annotated["VLANType", strawberry.lazy('ipam.graphql.types')] | None
  29. tenant: Annotated["TenantType", strawberry.lazy('tenancy.graphql.types')] | None
  30. interfaces: List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]
  31. @strawberry_django.type(
  32. models.WirelessLink,
  33. fields='__all__',
  34. filters=WirelessLinkFilter
  35. )
  36. class WirelessLinkType(NetBoxObjectType):
  37. interface_a: Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]
  38. interface_b: Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]
  39. tenant: Annotated["TenantType", strawberry.lazy('tenancy.graphql.types')] | None
  40. _interface_a_device: Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')] | None
  41. _interface_b_device: Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')] | None