From d96a8c7b11042bdfc571469e07a1c28f664fd00a Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Wed, 7 Sep 2022 08:41:06 +0200 Subject: [PATCH 1/3] Add document to solution, add more generic document block --- server/basicknowledge/models.py | 6 +++--- server/books/blocks.py | 16 ++++++++++++++++ server/books/models/contentblock.py | 10 ++++++---- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py index b0386d29..45fa3e1f 100644 --- a/server/basicknowledge/models.py +++ b/server/basicknowledge/models.py @@ -2,10 +2,10 @@ from django.db import models from django.utils.text import slugify from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel from wagtail.core.fields import RichTextField, StreamField -from wagtail.documents.blocks import DocumentChooserBlock from wagtail.images.blocks import ImageChooserBlock -from books.blocks import DocumentBlock, GeniallyBlock, InfogramBlock, InstrumentTextBlock, LinkBlock, SectionTitleBlock, \ +from books.blocks import CMSDocumentBlock, DocumentBlock, GeniallyBlock, InfogramBlock, InstrumentTextBlock, LinkBlock, \ + SectionTitleBlock, \ SubtitleBlock, ThinglinkBlock, VideoBlock from core.constants import DEFAULT_RICH_TEXT_FEATURES from core.wagtail_utils import StrictHierarchyPage @@ -53,7 +53,7 @@ class BasicKnowledge(StrictHierarchyPage): ('genially_block', GeniallyBlock()), ('thinglink_block', ThinglinkBlock()), ('subtitle', SubtitleBlock()), - ('cms_document_block', DocumentChooserBlock()), + ('cms_document_block', CMSDocumentBlock()), ], null=True, blank=True) new_type = models.ForeignKey(InstrumentType, null=True, on_delete=models.PROTECT, related_name='instruments') diff --git a/server/books/blocks.py b/server/books/blocks.py index 8ec10659..3b312850 100644 --- a/server/books/blocks.py +++ b/server/books/blocks.py @@ -1,4 +1,5 @@ from wagtail.core import blocks +from wagtail.documents.blocks import DocumentChooserBlock from wagtail.snippets.blocks import SnippetChooserBlock from assignments.models import Assignment @@ -6,6 +7,11 @@ from core.constants import DEFAULT_RICH_TEXT_FEATURES, INSTRUMENTS_RICH_TEXT_FEA from surveys.models import Survey +class CMSDocumentBlock(DocumentChooserBlock): + class Meta: + label = 'CMS Document' + + # link_block class LinkBlock(blocks.StructBlock): class Meta: @@ -23,6 +29,14 @@ class TextBlock(blocks.StructBlock): text = blocks.RichTextBlock(features=DEFAULT_RICH_TEXT_FEATURES) +class SolutionBlock(blocks.StructBlock): + class Meta: + icon = 'tick' + + text = blocks.RichTextBlock(features=DEFAULT_RICH_TEXT_FEATURES) + document = CMSDocumentBlock() + + # 'basic_knowledge' class BasicKnowledgeBlock(blocks.StructBlock): class Meta: @@ -115,6 +129,8 @@ class InstructionBlock(blocks.StructBlock): url = blocks.URLBlock() text = blocks.TextBlock(required=False) + document = DocumentChooserBlock() + # 'text_block' 'task' 'basic_knowledge' 'student_entry' 'image_block' # diff --git a/server/books/models/contentblock.py b/server/books/models/contentblock.py index 804cf0b4..1bd999b6 100644 --- a/server/books/models/contentblock.py +++ b/server/books/models/contentblock.py @@ -4,11 +4,11 @@ from django.db import models from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList, StreamFieldPanel from wagtail.core.blocks import StreamBlock from wagtail.core.fields import StreamField -from wagtail.documents.blocks import DocumentChooserBlock from wagtail.images.blocks import ImageChooserBlock from core.wagtail_utils import get_default_settings -from books.blocks import TextBlock, BasicKnowledgeBlock, LinkBlock, VideoBlock, DocumentBlock, \ +from books.blocks import CMSDocumentBlock, SolutionBlock, TextBlock, BasicKnowledgeBlock, LinkBlock, VideoBlock, \ + DocumentBlock, \ ImageUrlBlock, AssignmentBlock, InfogramBlock, GeniallyBlock, SubtitleBlock, SurveyBlock, ModuleRoomSlugBlock, \ ThinglinkBlock, InstructionBlock from books.utils import get_type_and_value @@ -56,7 +56,8 @@ class ContentBlock(StrictHierarchyPage): ('image_block', ImageChooserBlock()), ('image_url_block', ImageUrlBlock()), ('link_block', LinkBlock()), - ('solution', TextBlock(icon='tick')), + # ('solution', TextBlock(icon='tick')), + ('solution', SolutionBlock()), ('video_block', VideoBlock()), ('document_block', DocumentBlock()), ('infogram_block', InfogramBlock()), @@ -65,7 +66,8 @@ class ContentBlock(StrictHierarchyPage): ('subtitle', SubtitleBlock()), ('instruction', InstructionBlock()), ('module_room_slug', ModuleRoomSlugBlock()), - ('cms_document_block', DocumentChooserBlock()) + # ('cms_document_block', DocumentChooserBlock(label='CMS Document')) + ('cms_document_block', CMSDocumentBlock()) ] content_list_item = StreamBlock(content_blocks) From 7fae6555431f14e0b1e467b58d23a2b118c2f24f Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Thu, 8 Sep 2022 12:28:37 +0200 Subject: [PATCH 2/3] Add documents to client view --- .../content-blocks/CmsDocumentBlock.vue | 24 ++++++++++++- .../components/content-blocks/Instruction.vue | 5 ++- .../components/content-blocks/Solution.vue | 24 +++++++++---- server/api/graphene_wagtail.py | 34 +++++++++++++------ server/books/blocks.py | 6 ++-- 5 files changed, 72 insertions(+), 21 deletions(-) diff --git a/client/src/components/content-blocks/CmsDocumentBlock.vue b/client/src/components/content-blocks/CmsDocumentBlock.vue index 8a0645b1..70817717 100644 --- a/client/src/components/content-blocks/CmsDocumentBlock.vue +++ b/client/src/components/content-blocks/CmsDocumentBlock.vue @@ -1,5 +1,8 @@