From c679f84236772c7ed11dc800bc157572b1a7f14a Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Mon, 25 Jul 2022 18:24:34 +0200 Subject: [PATCH] Add cms-document-block to api and frontend --- .../content-blocks/CmsDocumentBlock.vue | 44 +++++++++++++++++++ .../content-blocks/ContentComponent.vue | 2 + server/api/graphene_wagtail.py | 14 ++++++ server/books/schema/mutations/utils.py | 1 - 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 client/src/components/content-blocks/CmsDocumentBlock.vue diff --git a/client/src/components/content-blocks/CmsDocumentBlock.vue b/client/src/components/content-blocks/CmsDocumentBlock.vue new file mode 100644 index 00000000..97ce8563 --- /dev/null +++ b/client/src/components/content-blocks/CmsDocumentBlock.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/client/src/components/content-blocks/ContentComponent.vue b/client/src/components/content-blocks/ContentComponent.vue index 46b245aa..a2ffe238 100644 --- a/client/src/components/content-blocks/ContentComponent.vue +++ b/client/src/components/content-blocks/ContentComponent.vue @@ -31,6 +31,7 @@ const ImageUrlBlock = () => import(/* webpackChunkName: "content-components" */' const VideoBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/VideoBlock'); const LinkBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/LinkBlock'); const DocumentBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/DocumentBlock'); +const CmsDocumentBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/CmsDocumentBlock'); const InfogramBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/InfogramBlock'); const ThinglinkBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/ThinglinkBlock'); const GeniallyBlock = () => import(/* webpackChunkName: "content-components" */'@/components/content-blocks/GeniallyBlock'); @@ -88,6 +89,7 @@ export default { 'content_list': ContentListBlock, 'module_room_slug': ModuleRoomSlug, 'thinglink_block': ThinglinkBlock, + 'cms_document_block': CmsDocumentBlock, Survey, Solution, Instruction, diff --git a/server/api/graphene_wagtail.py b/server/api/graphene_wagtail.py index 39786509..e960b50b 100644 --- a/server/api/graphene_wagtail.py +++ b/server/api/graphene_wagtail.py @@ -6,6 +6,7 @@ from graphene.types import Scalar from graphene_django.converter import convert_django_field from graphql_relay import to_global_id from wagtail.core.fields import StreamField +from wagtail.documents.models import Document from wagtail.images.models import Image from assignments.models import Assignment @@ -85,6 +86,19 @@ def augment_fields(raw_data): item_data = data['value'] data['value'] = augment_fields(item_data) + if _type == 'cms_document_block': + _value = data['value'] + document = Document.objects.get(id=_value) + value = { + 'value': _value, + 'id': document.id, + 'file_name': document.filename, + 'file_extension': document.file_extension, + 'url': document.url, + 'title': document.title + } + data['value'] = value + return raw_data diff --git a/server/books/schema/mutations/utils.py b/server/books/schema/mutations/utils.py index 6b9a275f..821e012f 100644 --- a/server/books/schema/mutations/utils.py +++ b/server/books/schema/mutations/utils.py @@ -41,7 +41,6 @@ ALLOWED_BLOCKS = ( 'document_block', 'content_list_item', 'subtitle', - 'cms_document_block' )