diff --git a/netbox/circuits/graphql/types.py b/netbox/circuits/graphql/types.py index 83244a098..420e13772 100644 --- a/netbox/circuits/graphql/types.py +++ b/netbox/circuits/graphql/types.py @@ -27,7 +27,22 @@ __all__ = ( filters=ProviderFilter ) class ProviderType(NetBoxObjectType, ContactsMixin): - pass + + @strawberry_django.field + def networks(self) -> List[Annotated["ProviderNetworkType", strawberry.lazy('circuits.graphql.types')]]: + return self.networks.all() + + @strawberry_django.field + def circuits(self) -> List[Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]]: + return self.circuits.all() + + @strawberry_django.field + def asns(self) -> List[Annotated["ASNType", strawberry.lazy('ipam.graphql.types')]]: + return self.asns.all() + + @strawberry_django.field + def accounts(self) -> List[Annotated["ProviderAccountType", strawberry.lazy('circuits.graphql.types')]]: + return self.accounts.all() @strawberry_django.type( @@ -36,7 +51,10 @@ class ProviderType(NetBoxObjectType, ContactsMixin): filters=ProviderAccountFilter ) class ProviderAccountType(NetBoxObjectType): - pass + + @strawberry_django.field + def circuits(self) -> List[Annotated["CircuitType", strawberry.lazy('circuits.graphql.types')]]: + return self.circuits.all() @strawberry_django.type( @@ -45,7 +63,10 @@ class ProviderAccountType(NetBoxObjectType): filters=ProviderNetworkFilter ) class ProviderNetworkType(NetBoxObjectType): - pass + + @strawberry_django.field + def circuit_terminations(self) -> List[Annotated["CircuitTerminationType", strawberry.lazy('circuits.graphql.types')]]: + return self.circuit_terminations.all() @strawberry_django.type( diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 87363ee16..26855cab5 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -150,9 +150,7 @@ class CableType(NetBoxObjectType): filters=ConsolePortFilter ) class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): - - def resolve_type(self, info): - return self.type or None + pass @strawberry_django.type( @@ -163,9 +161,6 @@ class ConsolePortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin) class ConsolePortTemplateType(ComponentTemplateObjectType): _name: str - def resolve_type(self, info): - return self.type or None - @strawberry_django.type( models.ConsoleServerPort, @@ -174,9 +169,7 @@ class ConsolePortTemplateType(ComponentTemplateObjectType): filters=ConsoleServerPortFilter ) class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): - - def resolve_type(self, info): - return self.type or None + pass @strawberry_django.type( @@ -187,9 +180,6 @@ class ConsoleServerPortType(ComponentObjectType, CabledObjectMixin, PathEndpoint class ConsoleServerPortTemplateType(ComponentTemplateObjectType): _name: str - def resolve_type(self, info): - return self.type or None - @strawberry_django.type( models.Device, @@ -209,12 +199,6 @@ class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, ContactsMixin, NetBo module_bay_count: BigInt inventory_item_count: BigInt - def resolve_face(self, info): - return self.face or None - - def resolve_airflow(self, info): - return self.airflow or None - @strawberry_django.field def devicebays(self) -> List[Annotated["DeviceBayType", strawberry.lazy('dcim.graphql.types')]]: return self.device_bays.all() @@ -366,15 +350,6 @@ class DeviceTypeType(NetBoxObjectType): module_bay_template_count: BigInt inventory_item_template_count: BigInt - def resolve_subdevice_role(self, info): - return self.subdevice_role or None - - def resolve_airflow(self, info): - return self.airflow or None - - def resolve_weight_unit(self, info): - return self.weight_unit or None - @strawberry_django.field def frontporttemplates(self) -> List[Annotated["FrontPortTemplateType", strawberry.lazy('dcim.graphql.types')]]: return self.device_bays.all() @@ -730,12 +705,7 @@ class PowerFeedType(NetBoxObjectType, CabledObjectMixin, PathEndpointMixin): filters=PowerOutletFilter ) class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): - - def resolve_feed_leg(self, info): - return self.feed_leg or None - - def resolve_type(self, info): - return self.type or None + pass @strawberry_django.type( @@ -746,12 +716,6 @@ class PowerOutletType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin) class PowerOutletTemplateType(ComponentTemplateObjectType): _name: str - def resolve_feed_leg(self, info): - return self.feed_leg or None - - def resolve_type(self, info): - return self.type or None - @strawberry_django.type( models.PowerPanel, @@ -772,8 +736,9 @@ class PowerPanelType(NetBoxObjectType, ContactsMixin): ) class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): - def resolve_type(self, info): - return self.type or None + @strawberry_django.field + def poweroutlets(self) -> List[Annotated["PowerOutletType", strawberry.lazy('dcim.graphql.types')]]: + return self.poweroutlets.all() @strawberry_django.type( @@ -784,8 +749,9 @@ class PowerPortType(ComponentObjectType, CabledObjectMixin, PathEndpointMixin): class PowerPortTemplateType(ComponentTemplateObjectType): _name: str - def resolve_type(self, info): - return self.type or None + @strawberry_django.field + def poweroutlet_templates(self) -> List[Annotated["PowerOutletTemplateType", strawberry.lazy('dcim.graphql.types')]]: + return self.poweroutlet_templates.all() @strawberry_django.type( @@ -796,15 +762,6 @@ class PowerPortTemplateType(ComponentTemplateObjectType): class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObjectType): _name: str - def resolve_type(self, info): - return self.type or None - - def resolve_outer_unit(self, info): - return self.outer_unit or None - - def resolve_weight_unit(self, info): - return self.weight_unit or None - @strawberry_django.type( models.RackReservation, @@ -813,7 +770,7 @@ class RackType(VLANGroupsMixin, ImageAttachmentsMixin, ContactsMixin, NetBoxObje filters=RackReservationFilter ) class RackReservationType(NetBoxObjectType): - pass + units: List[int] @strawberry_django.type( @@ -823,7 +780,11 @@ class RackReservationType(NetBoxObjectType): filters=RackRoleFilter ) class RackRoleType(OrganizationalObjectType): - pass + color: str + + @strawberry_django.field + def racks(self) -> List[Annotated["RackType", strawberry.lazy('dcim.graphql.types')]]: + return self.racks.all() @strawberry_django.type( @@ -833,7 +794,11 @@ class RackRoleType(OrganizationalObjectType): filters=RearPortFilter ) class RearPortType(ComponentObjectType, CabledObjectMixin): - pass + color: str + + @strawberry_django.field + def frontports(self) -> List[Annotated["FrontPortType", strawberry.lazy('dcim.graphql.types')]]: + return self.frontports.all() @strawberry_django.type( @@ -844,6 +809,11 @@ class RearPortType(ComponentObjectType, CabledObjectMixin): ) class RearPortTemplateType(ComponentTemplateObjectType): _name: str + color: str + + @strawberry_django.field + def frontport_templates(self) -> List[Annotated["FrontPortTemplateType", strawberry.lazy('dcim.graphql.types')]]: + return self.frontport_templates.all() @strawberry_django.type( @@ -885,6 +855,10 @@ class SiteGroupType(VLANGroupsMixin, ContactsMixin, OrganizationalObjectType): class VirtualChassisType(NetBoxObjectType): member_count: BigInt + @strawberry_django.field + def members(self) -> List[Annotated["DeviceType", strawberry.lazy('dcim.graphql.types')]]: + return self.members.all() + @strawberry_django.type( models.VirtualDeviceContext, @@ -892,4 +866,7 @@ class VirtualChassisType(NetBoxObjectType): filters=VirtualDeviceContextFilter ) class VirtualDeviceContextType(NetBoxObjectType): - pass + + @strawberry_django.field + def interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]: + return self.interfaces.all() diff --git a/netbox/ipam/graphql/types.py b/netbox/ipam/graphql/types.py index 5676ecb16..dbefe50e1 100644 --- a/netbox/ipam/graphql/types.py +++ b/netbox/ipam/graphql/types.py @@ -165,7 +165,7 @@ class IPRangeType(NetBoxObjectType): filters=PrefixFilter ) class PrefixType(NetBoxObjectType, BaseIPAddressFamilyType): - pass + prefix: str @strawberry_django.type( @@ -202,7 +202,11 @@ class RouteTargetType(NetBoxObjectType): filters=ServiceFilter ) class ServiceType(NetBoxObjectType): - pass + ports: List[int] + + @strawberry_django.field + def ipaddresses(self) -> List[Annotated["IPAddressType", strawberry.lazy('ipam.graphql.types')]]: + return self.ipaddresses.all() @strawberry_django.type( @@ -212,7 +216,7 @@ class ServiceType(NetBoxObjectType): filters=ServiceTemplateFilter ) class ServiceTemplateType(NetBoxObjectType): - pass + ports: List[int] @strawberry_django.type( diff --git a/netbox/users/graphql/types.py b/netbox/users/graphql/types.py index d6f67badd..5463ee2a8 100644 --- a/netbox/users/graphql/types.py +++ b/netbox/users/graphql/types.py @@ -1,3 +1,5 @@ +from typing import List + import strawberry import strawberry_django from django.contrib.auth import get_user_model @@ -36,3 +38,7 @@ class UserType: @classmethod def get_queryset(cls, queryset, info, **kwargs): return RestrictedQuerySet(model=get_user_model()).restrict(info.context.request.user, 'view') + + @strawberry_django.field + def groups(self) -> List[GroupType]: + return self.groups.all() diff --git a/netbox/vpn/graphql/types.py b/netbox/vpn/graphql/types.py index b986fdf83..fbd9683e7 100644 --- a/netbox/vpn/graphql/types.py +++ b/netbox/vpn/graphql/types.py @@ -28,7 +28,10 @@ __all__ = ( filters=TunnelGroupFilter ) class TunnelGroupType(OrganizationalObjectType): - pass + + @strawberry_django.field + def tunnels(self) -> List[Annotated["TunnelType", strawberry.lazy('vpn.graphql.types')]]: + return self.tunnels.all() @strawberry_django.type( @@ -46,7 +49,10 @@ class TunnelTerminationType(CustomFieldsMixin, TagsMixin, ObjectType): filters=TunnelFilter ) class TunnelType(NetBoxObjectType): - pass + + @strawberry_django.field + def terminations(self) -> List[Annotated["TunnelTerminationType", strawberry.lazy('vpn.graphql.types')]]: + return self.terminations.all() @strawberry_django.type( diff --git a/netbox/wireless/graphql/types.py b/netbox/wireless/graphql/types.py index e7afe00c7..c3204aecb 100644 --- a/netbox/wireless/graphql/types.py +++ b/netbox/wireless/graphql/types.py @@ -1,3 +1,5 @@ +from typing import Annotated, List, Union + import strawberry import strawberry_django @@ -29,11 +31,9 @@ class WirelessLANGroupType(OrganizationalObjectType): ) class WirelessLANType(NetBoxObjectType): - def resolve_auth_type(self, info): - return self.auth_type or None - - def resolve_auth_cipher(self, info): - return self.auth_cipher or None + @strawberry_django.field + def interfaces(self) -> List[Annotated["InterfaceType", strawberry.lazy('dcim.graphql.types')]]: + return self.interfaces.all() @strawberry_django.type( @@ -42,9 +42,4 @@ class WirelessLANType(NetBoxObjectType): filters=WirelessLinkFilter ) class WirelessLinkType(NetBoxObjectType): - - def resolve_auth_type(self, info): - return self.auth_type or None - - def resolve_auth_cipher(self, info): - return self.auth_cipher or None + pass