mirror of
https://github.com/netbox-community/netbox.git
synced 2026-03-28 04:12:10 +01:00
Clone all GraphQL objects to V1 versions
This commit is contained in:
38
netbox/tenancy/graphql/filter_mixins_v1.py
Normal file
38
netbox/tenancy/graphql/filter_mixins_v1.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry import ID
|
||||
|
||||
from core.graphql.filter_mixins_v1 import BaseFilterMixinV1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from netbox.graphql.filter_lookups import TreeNodeFilter
|
||||
from .filters_v1 import ContactAssignmentFilterV1, TenantFilterV1, TenantGroupFilterV1
|
||||
|
||||
__all__ = (
|
||||
'ContactFilterMixinV1',
|
||||
'TenancyFilterMixinV1',
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ContactFilterMixinV1(BaseFilterMixinV1):
|
||||
contacts: Annotated['ContactAssignmentFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class TenancyFilterMixinV1(BaseFilterMixinV1):
|
||||
tenant: Annotated['TenantFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
tenant_id: ID | None = strawberry_django.filter_field()
|
||||
tenant_group: Annotated['TenantGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
tenant_group_id: Annotated['TreeNodeFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
210
netbox/tenancy/graphql/filters_v1.py
Normal file
210
netbox/tenancy/graphql/filters_v1.py
Normal file
@@ -0,0 +1,210 @@
|
||||
from typing import Annotated, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
from strawberry.scalars import ID
|
||||
from strawberry_django import FilterLookup
|
||||
|
||||
from core.graphql.filter_mixins_v1 import ChangeLogFilterMixinV1
|
||||
from extras.graphql.filter_mixins_v1 import CustomFieldsFilterMixinV1, TagsFilterMixinV1
|
||||
from netbox.graphql.filter_mixins_v1 import (
|
||||
NestedGroupModelFilterMixinV1,
|
||||
OrganizationalModelFilterMixinV1,
|
||||
PrimaryModelFilterMixinV1,
|
||||
)
|
||||
from tenancy import models
|
||||
from .filter_mixins_v1 import ContactFilterMixinV1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from core.graphql.filters_v1 import ContentTypeFilterV1
|
||||
from circuits.graphql.filters_v1 import CircuitFilterV1, CircuitGroupFilterV1, VirtualCircuitFilterV1
|
||||
from dcim.graphql.filters_v1 import (
|
||||
CableFilterV1,
|
||||
DeviceFilterV1,
|
||||
LocationFilterV1,
|
||||
PowerFeedFilterV1,
|
||||
RackFilterV1,
|
||||
RackReservationFilterV1,
|
||||
SiteFilterV1,
|
||||
VirtualDeviceContextFilterV1,
|
||||
)
|
||||
from ipam.graphql.filters_v1 import (
|
||||
AggregateFilterV1,
|
||||
ASNFilterV1,
|
||||
ASNRangeFilterV1,
|
||||
IPAddressFilterV1,
|
||||
IPRangeFilterV1,
|
||||
PrefixFilterV1,
|
||||
RouteTargetFilterV1,
|
||||
VLANFilterV1,
|
||||
VLANGroupFilterV1,
|
||||
VRFFilterV1,
|
||||
)
|
||||
from netbox.graphql.filter_lookups import TreeNodeFilter
|
||||
from wireless.graphql.filters_v1 import WirelessLANFilterV1, WirelessLinkFilterV1
|
||||
from virtualization.graphql.filters_v1 import ClusterFilterV1, VirtualMachineFilterV1
|
||||
from vpn.graphql.filters_v1 import L2VPNFilterV1, TunnelFilterV1
|
||||
from .enums import *
|
||||
|
||||
__all__ = (
|
||||
'TenantFilterV1',
|
||||
'TenantGroupFilterV1',
|
||||
'ContactFilterV1',
|
||||
'ContactRoleFilterV1',
|
||||
'ContactGroupFilterV1',
|
||||
'ContactAssignmentFilterV1',
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.Tenant, lookups=True)
|
||||
class TenantFilterV1(PrimaryModelFilterMixinV1, ContactFilterMixinV1):
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
slug: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
group: Annotated['TenantGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
group_id: Annotated['TreeNodeFilter', strawberry.lazy('netbox.graphql.filter_lookups')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
# Reverse relations
|
||||
aggregates: Annotated['AggregateFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
asns: Annotated['ASNFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = strawberry_django.filter_field()
|
||||
asn_ranges: Annotated['ASNRangeFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
cables: Annotated['CableFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
circuit_groups: Annotated['CircuitGroupFilterV1', strawberry.lazy('circuits.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
circuits: Annotated['CircuitFilterV1', strawberry.lazy('circuits.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
clusters: Annotated['ClusterFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
devices: Annotated['DeviceFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
ip_addresses: Annotated['IPAddressFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
ip_ranges: Annotated['IPRangeFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
l2vpns: Annotated['L2VPNFilterV1', strawberry.lazy('vpn.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
locations: Annotated['LocationFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
power_feeds: Annotated['PowerFeedFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
prefixes: Annotated['PrefixFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
racks: Annotated['RackFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
rackreservations: Annotated['RackReservationFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
route_targets: Annotated['RouteTargetFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
sites: Annotated['SiteFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
tunnels: Annotated['TunnelFilterV1', strawberry.lazy('vpn.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vdcs: Annotated['VirtualDeviceContextFilterV1', strawberry.lazy('dcim.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
virtual_machines: Annotated[
|
||||
'VirtualMachineFilterV1', strawberry.lazy('virtualization.graphql.filters_v1')
|
||||
] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vlan_groups: Annotated['VLANGroupFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vlans: Annotated['VLANFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
virtual_circuits: Annotated['VirtualCircuitFilterV1', strawberry.lazy('circuits.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
vrfs: Annotated['VRFFilterV1', strawberry.lazy('ipam.graphql.filters_v1')] | None = strawberry_django.filter_field()
|
||||
wireless_lans: Annotated['WirelessLANFilterV1', strawberry.lazy('wireless.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
wireless_links: Annotated['WirelessLinkFilterV1', strawberry.lazy('wireless.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.TenantGroup, lookups=True)
|
||||
class TenantGroupFilterV1(OrganizationalModelFilterMixinV1):
|
||||
parent: Annotated['TenantGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
parent_id: ID | None = strawberry.UNSET
|
||||
tenants: Annotated['TenantFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
children: Annotated['TenantGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1'), True] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.Contact, lookups=True)
|
||||
class ContactFilterV1(PrimaryModelFilterMixinV1):
|
||||
name: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
title: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
phone: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
email: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
address: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
link: FilterLookup[str] | None = strawberry_django.filter_field()
|
||||
groups: Annotated['ContactGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
assignments: Annotated['ContactAssignmentFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.ContactRole, lookups=True)
|
||||
class ContactRoleFilterV1(OrganizationalModelFilterMixinV1):
|
||||
pass
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.ContactGroup, lookups=True)
|
||||
class ContactGroupFilterV1(NestedGroupModelFilterMixinV1):
|
||||
parent: Annotated['ContactGroupFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
|
||||
|
||||
@strawberry_django.filter_type(models.ContactAssignment, lookups=True)
|
||||
class ContactAssignmentFilterV1(CustomFieldsFilterMixinV1, TagsFilterMixinV1, ChangeLogFilterMixinV1):
|
||||
object_type: Annotated['ContentTypeFilterV1', strawberry.lazy('core.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
object_id: ID | None = strawberry_django.filter_field()
|
||||
contact: Annotated['ContactFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
contact_id: ID | None = strawberry_django.filter_field()
|
||||
role: Annotated['ContactRoleFilterV1', strawberry.lazy('tenancy.graphql.filters_v1')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
role_id: ID | None = strawberry_django.filter_field()
|
||||
priority: Annotated['ContactPriorityEnum', strawberry.lazy('tenancy.graphql.enums')] | None = (
|
||||
strawberry_django.filter_field()
|
||||
)
|
||||
12
netbox/tenancy/graphql/mixins_v1.py
Normal file
12
netbox/tenancy/graphql/mixins_v1.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from typing import Annotated, List
|
||||
|
||||
import strawberry
|
||||
|
||||
__all__ = (
|
||||
'ContactAssignmentsMixinV1',
|
||||
)
|
||||
|
||||
|
||||
@strawberry.type
|
||||
class ContactAssignmentsMixinV1:
|
||||
assignments: List[Annotated["ContactAssignmentTypeV1", strawberry.lazy('tenancy.graphql.types_v1')]] # noqa: F821
|
||||
27
netbox/tenancy/graphql/schema_v1.py
Normal file
27
netbox/tenancy/graphql/schema_v1.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from typing import List
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
|
||||
from .types_v1 import *
|
||||
|
||||
|
||||
@strawberry.type(name="Query")
|
||||
class TenancyQueryV1:
|
||||
tenant: TenantTypeV1 = strawberry_django.field()
|
||||
tenant_list: List[TenantTypeV1] = strawberry_django.field()
|
||||
|
||||
tenant_group: TenantGroupTypeV1 = strawberry_django.field()
|
||||
tenant_group_list: List[TenantGroupTypeV1] = strawberry_django.field()
|
||||
|
||||
contact: ContactTypeV1 = strawberry_django.field()
|
||||
contact_list: List[ContactTypeV1] = strawberry_django.field()
|
||||
|
||||
contact_role: ContactRoleTypeV1 = strawberry_django.field()
|
||||
contact_role_list: List[ContactRoleTypeV1] = strawberry_django.field()
|
||||
|
||||
contact_group: ContactGroupTypeV1 = strawberry_django.field()
|
||||
contact_group_list: List[ContactGroupTypeV1] = strawberry_django.field()
|
||||
|
||||
contact_assignment: ContactAssignmentTypeV1 = strawberry_django.field()
|
||||
contact_assignment_list: List[ContactAssignmentTypeV1] = strawberry_django.field()
|
||||
147
netbox/tenancy/graphql/types_v1.py
Normal file
147
netbox/tenancy/graphql/types_v1.py
Normal file
@@ -0,0 +1,147 @@
|
||||
from typing import Annotated, List, TYPE_CHECKING
|
||||
|
||||
import strawberry
|
||||
import strawberry_django
|
||||
|
||||
from extras.graphql.mixins_v1 import CustomFieldsMixinV1, TagsMixinV1, ContactsMixinV1
|
||||
from netbox.graphql.types_v1 import BaseObjectTypeV1, OrganizationalObjectTypeV1, NetBoxObjectTypeV1
|
||||
from tenancy import models
|
||||
from .filters_v1 import *
|
||||
from .mixins_v1 import ContactAssignmentsMixinV1
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from circuits.graphql.types_v1 import CircuitTypeV1
|
||||
from dcim.graphql.types_v1 import (
|
||||
CableTypeV1,
|
||||
DeviceTypeV1,
|
||||
LocationTypeV1,
|
||||
PowerFeedTypeV1,
|
||||
RackTypeV1,
|
||||
RackReservationTypeV1,
|
||||
SiteTypeV1,
|
||||
VirtualDeviceContextTypeV1,
|
||||
)
|
||||
from ipam.graphql.types_v1 import (
|
||||
AggregateTypeV1,
|
||||
ASNTypeV1,
|
||||
ASNRangeTypeV1,
|
||||
IPAddressTypeV1,
|
||||
IPRangeTypeV1,
|
||||
PrefixTypeV1,
|
||||
RouteTargetTypeV1,
|
||||
VLANTypeV1,
|
||||
VRFTypeV1,
|
||||
)
|
||||
from netbox.graphql.types_v1 import ContentTypeTypeV1
|
||||
from wireless.graphql.types_v1 import WirelessLANTypeV1, WirelessLinkTypeV1
|
||||
from virtualization.graphql.types_v1 import ClusterTypeV1, VirtualMachineTypeV1
|
||||
from vpn.graphql.types_v1 import L2VPNTypeV1, TunnelTypeV1
|
||||
|
||||
__all__ = (
|
||||
'ContactAssignmentTypeV1',
|
||||
'ContactGroupTypeV1',
|
||||
'ContactRoleTypeV1',
|
||||
'ContactTypeV1',
|
||||
'TenantTypeV1',
|
||||
'TenantGroupTypeV1',
|
||||
)
|
||||
|
||||
|
||||
#
|
||||
# Tenants
|
||||
#
|
||||
|
||||
@strawberry_django.type(
|
||||
models.Tenant,
|
||||
fields='__all__',
|
||||
filters=TenantFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class TenantTypeV1(ContactsMixinV1, NetBoxObjectTypeV1):
|
||||
group: Annotated['TenantGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
asns: List[Annotated['ASNTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
circuits: List[Annotated['CircuitTypeV1', strawberry.lazy('circuits.graphql.types_v1')]]
|
||||
sites: List[Annotated['SiteTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
vlans: List[Annotated['VLANTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
wireless_lans: List[Annotated['WirelessLANTypeV1', strawberry.lazy('wireless.graphql.types_v1')]]
|
||||
route_targets: List[Annotated['RouteTargetTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
locations: List[Annotated['LocationTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
ip_ranges: List[Annotated['IPRangeTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
rackreservations: List[Annotated['RackReservationTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
racks: List[Annotated['RackTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
vdcs: List[Annotated['VirtualDeviceContextTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
prefixes: List[Annotated['PrefixTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
cables: List[Annotated['CableTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
virtual_machines: List[Annotated['VirtualMachineTypeV1', strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
vrfs: List[Annotated['VRFTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
asn_ranges: List[Annotated['ASNRangeTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
wireless_links: List[Annotated['WirelessLinkTypeV1', strawberry.lazy('wireless.graphql.types_v1')]]
|
||||
aggregates: List[Annotated['AggregateTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
power_feeds: List[Annotated['PowerFeedTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
devices: List[Annotated['DeviceTypeV1', strawberry.lazy('dcim.graphql.types_v1')]]
|
||||
tunnels: List[Annotated['TunnelTypeV1', strawberry.lazy('vpn.graphql.types_v1')]]
|
||||
ip_addresses: List[Annotated['IPAddressTypeV1', strawberry.lazy('ipam.graphql.types_v1')]]
|
||||
clusters: List[Annotated['ClusterTypeV1', strawberry.lazy('virtualization.graphql.types_v1')]]
|
||||
l2vpns: List[Annotated['L2VPNTypeV1', strawberry.lazy('vpn.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.TenantGroup,
|
||||
fields='__all__',
|
||||
filters=TenantGroupFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class TenantGroupTypeV1(OrganizationalObjectTypeV1):
|
||||
parent: Annotated['TenantGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
|
||||
tenants: List[TenantTypeV1]
|
||||
children: List[Annotated['TenantGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')]]
|
||||
|
||||
|
||||
#
|
||||
# Contacts
|
||||
#
|
||||
|
||||
@strawberry_django.type(
|
||||
models.Contact,
|
||||
fields='__all__',
|
||||
filters=ContactFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ContactTypeV1(ContactAssignmentsMixinV1, NetBoxObjectTypeV1):
|
||||
groups: List[Annotated['ContactGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.ContactRole,
|
||||
fields='__all__',
|
||||
filters=ContactRoleFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ContactRoleTypeV1(ContactAssignmentsMixinV1, OrganizationalObjectTypeV1):
|
||||
pass
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.ContactGroup,
|
||||
fields='__all__',
|
||||
filters=ContactGroupFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ContactGroupTypeV1(OrganizationalObjectTypeV1):
|
||||
parent: Annotated['ContactGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
|
||||
contacts: List[ContactTypeV1]
|
||||
children: List[Annotated['ContactGroupTypeV1', strawberry.lazy('tenancy.graphql.types_v1')]]
|
||||
|
||||
|
||||
@strawberry_django.type(
|
||||
models.ContactAssignment,
|
||||
fields='__all__',
|
||||
filters=ContactAssignmentFilterV1,
|
||||
pagination=True
|
||||
)
|
||||
class ContactAssignmentTypeV1(CustomFieldsMixinV1, TagsMixinV1, BaseObjectTypeV1):
|
||||
object_type: Annotated['ContentTypeTypeV1', strawberry.lazy('netbox.graphql.types_v1')] | None
|
||||
contact: Annotated['ContactTypeV1', strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
role: Annotated['ContactRoleTypeV1', strawberry.lazy('tenancy.graphql.types_v1')] | None
|
||||
Reference in New Issue
Block a user