From 81d99a00611f587882b5c1728fcc945b87421ba8 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 4 Oct 2022 10:50:34 -0700 Subject: [PATCH 1/3] #10556 add display to GraphQL --- netbox/netbox/graphql/types.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/netbox/netbox/graphql/types.py b/netbox/netbox/graphql/types.py index 7d1b26f84..41eff6d46 100644 --- a/netbox/netbox/graphql/types.py +++ b/netbox/netbox/graphql/types.py @@ -1,3 +1,5 @@ +import graphene + from django.contrib.contenttypes.models import ContentType from graphene_django import DjangoObjectType @@ -19,6 +21,11 @@ class BaseObjectType(DjangoObjectType): """ Base GraphQL object type for all NetBox objects. Restricts the model queryset to enforce object permissions. """ + display = graphene.String() + + def resolve_display(parent, info, **kwargs): + return str(parent) + class Meta: abstract = True From 24ba840be7343404c7514b78c89c694f8cf97413 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Wed, 5 Oct 2022 12:50:17 -0700 Subject: [PATCH 2/3] 10472 graphene 3 (#10473) * update to Graphene 3.0.0 * 10472 exempt view permissions on tests * 10472 exempt permission check on graphql tests --- netbox/netbox/graphql/scalars.py | 2 +- netbox/netbox/graphql/schema.py | 2 +- netbox/utilities/testing/api.py | 2 ++ requirements.txt | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/netbox/netbox/graphql/scalars.py b/netbox/netbox/graphql/scalars.py index 7d14189dd..8fc186b4d 100644 --- a/netbox/netbox/graphql/scalars.py +++ b/netbox/netbox/graphql/scalars.py @@ -1,6 +1,6 @@ from graphene import Scalar from graphql.language import ast -from graphql.type.scalars import MAX_INT, MIN_INT +from graphene.types.scalars import MAX_INT, MIN_INT class BigInt(Scalar): diff --git a/netbox/netbox/graphql/schema.py b/netbox/netbox/graphql/schema.py index f0bc8559c..084ac3607 100644 --- a/netbox/netbox/graphql/schema.py +++ b/netbox/netbox/graphql/schema.py @@ -12,12 +12,12 @@ from wireless.graphql.schema import WirelessQuery class Query( + UsersQuery, CircuitsQuery, DCIMQuery, ExtrasQuery, IPAMQuery, TenancyQuery, - UsersQuery, VirtualizationQuery, WirelessQuery, *registry['plugins']['graphql_schemas'], # Append plugin schemas diff --git a/netbox/utilities/testing/api.py b/netbox/utilities/testing/api.py index b3fa5704f..f26e5fffc 100644 --- a/netbox/utilities/testing/api.py +++ b/netbox/utilities/testing/api.py @@ -467,6 +467,7 @@ class APIViewTestCases: return query @override_settings(LOGIN_REQUIRED=True) + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*', 'auth.user']) def test_graphql_get_object(self): url = reverse('graphql') field_name = self._get_graphql_base_name() @@ -492,6 +493,7 @@ class APIViewTestCases: self.assertNotIn('errors', data) @override_settings(LOGIN_REQUIRED=True) + @override_settings(EXEMPT_VIEW_PERMISSIONS=['*', 'auth.user']) def test_graphql_list_objects(self): url = reverse('graphql') field_name = f'{self._get_graphql_base_name()}_list' diff --git a/requirements.txt b/requirements.txt index 16c55462f..5b2a1141f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ django-taggit==3.0.0 django-timezone-field==5.0 djangorestframework==3.14.0 drf-yasg[validation]==1.21.4 -graphene-django==2.15.0 +graphene-django==3.0.0 gunicorn==20.1.0 Jinja2==3.1.2 Markdown==3.3.7 From 664d5db5eb2bde7555aab3d19e4aaf82054c9ea8 Mon Sep 17 00:00:00 2001 From: jeremystretch Date: Wed, 5 Oct 2022 15:53:50 -0400 Subject: [PATCH 3/3] Changelog for #10556 --- docs/release-notes/version-3.4.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/release-notes/version-3.4.md b/docs/release-notes/version-3.4.md index 537a4968d..313a84f20 100644 --- a/docs/release-notes/version-3.4.md +++ b/docs/release-notes/version-3.4.md @@ -21,6 +21,7 @@ A new `PluginMenu` class has been introduced, which enables a plugin to inject a * [#9654](https://github.com/netbox-community/netbox/issues/9654) - Add `weight` field to racks, device types, and module types * [#9892](https://github.com/netbox-community/netbox/issues/9892) - Add optional `name` field for FHRP groups * [#10348](https://github.com/netbox-community/netbox/issues/10348) - Add decimal custom field type +* [#10556](https://github.com/netbox-community/netbox/issues/10556) - Include a `display` field in all GraphQL object types ### Plugins API @@ -46,3 +47,7 @@ A new `PluginMenu` class has been introduced, which enables a plugin to inject a * Added optional `weight` and `weight_unit` fields * ipam.FHRPGroup * Added optional `name` field + +### GraphQL API Changes + +* All object types now include a `display` field