From 3ba9af1ce78266e2a9ce9ff845a4a4a148551838 Mon Sep 17 00:00:00 2001 From: Pawel Kowalski Date: Wed, 15 Aug 2018 14:45:18 +0200 Subject: [PATCH] Add StreamField serializer --- client/src/graphql/gql/moduleDetailsQuery.gql | 1 + server/api/graphene_wagtail.py | 19 +++++++++++++++++++ server/api/schema.py | 1 + server/book/schema.py | 2 +- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 server/api/graphene_wagtail.py diff --git a/client/src/graphql/gql/moduleDetailsQuery.gql b/client/src/graphql/gql/moduleDetailsQuery.gql index b2107912..6c0b4c40 100644 --- a/client/src/graphql/gql/moduleDetailsQuery.gql +++ b/client/src/graphql/gql/moduleDetailsQuery.gql @@ -35,6 +35,7 @@ query ModulesQuery($slug: String!) { slug title type + contents } } } diff --git a/server/api/graphene_wagtail.py b/server/api/graphene_wagtail.py new file mode 100644 index 00000000..d283b851 --- /dev/null +++ b/server/api/graphene_wagtail.py @@ -0,0 +1,19 @@ +# mysite/api/graphene_wagtail.py +# Taken from https://github.com/patrick91/wagtail-ql/blob/master/backend/graphene_utils/converter.py and slightly adjusted + +from graphene.types import Scalar +from graphene_django.converter import convert_django_field +from wagtail.core.fields import StreamField + + +class GenericStreamFieldType(Scalar): + @staticmethod + def serialize(stream_value): + return stream_value.stream_data + + +@convert_django_field.register(StreamField) +def convert_stream_field(field, registry=None): + return GenericStreamFieldType( + description=field.help_text, required=not field.null + ) diff --git a/server/api/schema.py b/server/api/schema.py index b2222e7d..ef6b9860 100644 --- a/server/api/schema.py +++ b/server/api/schema.py @@ -1,6 +1,7 @@ import graphene from django.conf import settings from graphene_django.debug import DjangoDebug +from api import graphene_wagtail from book.schema import BookQuery from objectives.schema import ObjectivesQuery diff --git a/server/book/schema.py b/server/book/schema.py index f4ced477..eeb22cc3 100644 --- a/server/book/schema.py +++ b/server/book/schema.py @@ -10,7 +10,7 @@ class ContentBlockNode(DjangoObjectType): class Meta: model = ContentBlock only_fields = [ - 'slug', 'title', 'type' + 'slug', 'title', 'type', 'contents' ] filter_fields = [ 'slug', 'title',