Quellcode durchsuchen

Fixes #6832: Support config context rendering under GraphQL API

jeremystretch vor 4 Jahren
Ursprung
Commit
57dc4c207f

+ 1 - 0
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
 

+ 4 - 2
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

+ 8 - 0
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()
 

+ 3 - 2
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