From a02408b4789ad9da96909d86d502d540f905eb30 Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Sat, 23 May 2026 02:17:58 +0200 Subject: [PATCH 1/2] fix: declare explicit fields on DjangoObjectType subclasses --- grapple/actions.py | 1 + grapple/types/collections.py | 1 + grapple/types/documents.py | 1 + grapple/types/images.py | 2 ++ grapple/types/pages.py | 1 + grapple/types/sites.py | 1 + 6 files changed, 7 insertions(+) diff --git a/grapple/actions.py b/grapple/actions.py index 3e2e154f..4f39501e 100644 --- a/grapple/actions.py +++ b/grapple/actions.py @@ -267,6 +267,7 @@ class UnmanagedMeta: class StubMeta: model = stub_model + fields = "__all__" # Gather any interfaces, and discard None values interface_classes = getattr(cls, "graphql_interfaces", ()) diff --git a/grapple/types/collections.py b/grapple/types/collections.py index acf1112a..70226042 100644 --- a/grapple/types/collections.py +++ b/grapple/types/collections.py @@ -15,6 +15,7 @@ class CollectionObjectType(DjangoObjectType): class Meta: model = Collection + fields = "__all__" id = graphene.ID(required=True) name = graphene.String(required=True) diff --git a/grapple/types/documents.py b/grapple/types/documents.py index d0c3b706..9011b76e 100644 --- a/grapple/types/documents.py +++ b/grapple/types/documents.py @@ -38,6 +38,7 @@ def resolve_tags(self, info, **kwargs): class Meta: model = WagtailDocument + fields = "__all__" def get_document_type(): diff --git a/grapple/types/images.py b/grapple/types/images.py index 07412210..297fffa6 100644 --- a/grapple/types/images.py +++ b/grapple/types/images.py @@ -95,6 +95,7 @@ class ImageRenditionObjectType(DjangoObjectType): class Meta: model = WagtailImageRendition + fields = "__all__" def resolve_url( instance: WagtailImageRendition, info: GraphQLResolveInfo, **kwargs @@ -127,6 +128,7 @@ class ImageObjectType(DjangoObjectType): class Meta: model = WagtailImage + fields = "__all__" def resolve_rendition( instance: WagtailImage, info: GraphQLResolveInfo, **kwargs diff --git a/grapple/types/pages.py b/grapple/types/pages.py index aaedd995..1a056dd9 100644 --- a/grapple/types/pages.py +++ b/grapple/types/pages.py @@ -23,6 +23,7 @@ class Page(DjangoObjectType): class Meta: model = WagtailPage interfaces = (get_page_interface(),) + fields = "__all__" def get_preview_page(token): diff --git a/grapple/types/sites.py b/grapple/types/sites.py index 08eaa7f2..060b712c 100644 --- a/grapple/types/sites.py +++ b/grapple/types/sites.py @@ -64,6 +64,7 @@ def resolve_page(self, info, **kwargs): class Meta: model = Site + fields = "__all__" def SitesQuery(): From ba48d5065650e522fd1ef9d16f68d6c0755489cf Mon Sep 17 00:00:00 2001 From: Jonas Braathen Date: Sat, 23 May 2026 02:34:27 +0200 Subject: [PATCH 2/2] fix: use 'exclude' instead of the deprecated 'exclude_fields' on DjangoObjectType --- grapple/actions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/grapple/actions.py b/grapple/actions.py index 4f39501e..fce6bc3c 100644 --- a/grapple/actions.py +++ b/grapple/actions.py @@ -312,7 +312,7 @@ class Meta: type_meta = {"Meta": Meta, "id": graphene.ID(), "name": type_name} - exclude_fields = [] + exclude = [] base_type_for_exclusion_checks = ( base_type if not issubclass(cls, WagtailPage) else WagtailPage ) @@ -327,7 +327,7 @@ class Meta: ): continue - exclude_fields.append(field) + exclude.append(field) # Add any custom fields to node if they are defined. methods = {} @@ -341,14 +341,14 @@ class Meta: type_meta[field.field_name] = field_type # Remove field from excluded list - if field.field_name in exclude_fields: - exclude_fields.remove(field.field_name) + if field.field_name in exclude: + exclude.remove(field.field_name) # Add a custom resolver for each field methods[f"resolve_{field.field_name}"] = model_resolver(field) # Replace stud node with real thing - type_meta["Meta"].exclude_fields = exclude_fields + type_meta["Meta"].exclude = exclude node = type(type_name, (base_type,), type_meta) # Add custom resolvers for fields