From 57dc4c207ff4c0f22c9d581c93dcbd4a72f9c91a Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 4 Aug 2021 15:55:55 -0400 Subject: [PATCH] Fixes #6832: Support config context rendering under GraphQL API --- docs/release-notes/version-3.0.md | 1 + netbox/dcim/graphql/types.py | 6 ++++-- netbox/extras/graphql/mixins.py | 8 ++++++++ netbox/virtualization/graphql/types.py | 5 +++-- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 3419a325c..3f422cfed 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -10,6 +10,7 @@ * [#6811](https://github.com/netbox-community/netbox/issues/6811) - Fix exception when editing users * [#6827](https://github.com/netbox-community/netbox/issues/6827) - Fix circuit termination connection dropdown +* [#6832](https://github.com/netbox-community/netbox/issues/6832) - Support config context rendering under GraphQL API * [#6846](https://github.com/netbox-community/netbox/issues/6846) - Form-driven REST API calls should use brief mode * [#6871](https://github.com/netbox-community/netbox/issues/6871) - Support dynamic tag types in GraphQL API diff --git a/netbox/dcim/graphql/types.py b/netbox/dcim/graphql/types.py index 45552ae8c..be10556be 100644 --- a/netbox/dcim/graphql/types.py +++ b/netbox/dcim/graphql/types.py @@ -1,5 +1,7 @@ from dcim import filtersets, models -from extras.graphql.mixins import ChangelogMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin +from extras.graphql.mixins import ( + ChangelogMixin, ConfigContextMixin, CustomFieldsMixin, ImageAttachmentsMixin, TagsMixin, +) from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin from netbox.graphql.types import BaseObjectType, OrganizationalObjectType, PrimaryObjectType @@ -132,7 +134,7 @@ class ConsoleServerPortTemplateType(ComponentTemplateObjectType): return self.type or None -class DeviceType(ImageAttachmentsMixin, PrimaryObjectType): +class DeviceType(ConfigContextMixin, ImageAttachmentsMixin, PrimaryObjectType): class Meta: model = models.Device diff --git a/netbox/extras/graphql/mixins.py b/netbox/extras/graphql/mixins.py index fb5dd027d..3cf12896b 100644 --- a/netbox/extras/graphql/mixins.py +++ b/netbox/extras/graphql/mixins.py @@ -3,6 +3,7 @@ from graphene.types.generic import GenericScalar __all__ = ( 'ChangelogMixin', + 'ConfigContextMixin', 'CustomFieldsMixin', 'ImageAttachmentsMixin', 'JournalEntriesMixin', @@ -17,6 +18,13 @@ class ChangelogMixin: return self.object_changes.restrict(info.context.user, 'view') +class ConfigContextMixin: + config_context = GenericScalar() + + def resolve_config_context(self, info): + return self.get_config_context() + + class CustomFieldsMixin: custom_fields = GenericScalar() diff --git a/netbox/virtualization/graphql/types.py b/netbox/virtualization/graphql/types.py index 3f1304a61..c21b6f9a1 100644 --- a/netbox/virtualization/graphql/types.py +++ b/netbox/virtualization/graphql/types.py @@ -1,7 +1,8 @@ from dcim.graphql.types import ComponentObjectType +from extras.graphql.mixins import ConfigContextMixin from ipam.graphql.mixins import IPAddressesMixin, VLANGroupsMixin -from virtualization import filtersets, models from netbox.graphql.types import OrganizationalObjectType, PrimaryObjectType +from virtualization import filtersets, models __all__ = ( 'ClusterType', @@ -36,7 +37,7 @@ class ClusterTypeType(OrganizationalObjectType): filterset_class = filtersets.ClusterTypeFilterSet -class VirtualMachineType(PrimaryObjectType): +class VirtualMachineType(ConfigContextMixin, PrimaryObjectType): class Meta: model = models.VirtualMachine