from wagtail import blocks from wagtail.documents.blocks import DocumentChooserBlock from wagtail.snippets.blocks import SnippetChooserBlock from assignments.models import Assignment from core.constants import DEFAULT_RICH_TEXT_FEATURES, INSTRUMENTS_RICH_TEXT_FEATURES from surveys.models import Survey """ Using a StructBlock inside a StreamField (e.g. inside a ContentBlock): as an illustration data = {'text': 'This is me'} self.contents.append(('solution', data)) by itself: block = SolutionBlock() data = {'text': 'This is me'} value = block.to_python(data) cleaned_value = block.clean(value) """ class CMSDocumentBlock(DocumentChooserBlock): class Meta: label = "CMS Document" # link_block class LinkBlock(blocks.StructBlock): class Meta: icon = "link" text = blocks.TextBlock() url = blocks.URLBlock() # 'text_block' 'solution' class TextBlock(blocks.StructBlock): class Meta: icon = "doc-full" 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(required=False) # 'basic_knowledge' class BasicKnowledgeBlock(blocks.StructBlock): class Meta: icon = "placeholder" label = "Instrument" description = blocks.RichTextBlock(required=False) basic_knowledge = blocks.PageChooserBlock( required=True, page_type="basicknowledge.BasicKnowledge" ) # 'image_url' class ImageUrlBlock(blocks.StructBlock): class Meta: icon = "image" title = blocks.TextBlock() url = blocks.URLBlock() # 'assignment' class AssignmentBlock(blocks.StructBlock): class Meta: icon = "download" assignment_id = SnippetChooserBlock( Assignment ) # probably wrong name, should be `assignment` only. todo: Can we change it? # 'survey' class SurveyBlock(blocks.StructBlock): class Meta: icon = "form" survey_id = SnippetChooserBlock( Survey ) # probably wrong name, should be `survey` only. todo: Can we change it? # 'video_block' class VideoBlock(blocks.StructBlock): class Meta: icon = "media" url = blocks.URLBlock() # 'document_block' class DocumentBlock(blocks.StructBlock): class Meta: icon = "doc-full" url = blocks.URLBlock() class InfogramBlock(blocks.StructBlock): id = blocks.TextBlock() title = blocks.TextBlock() class GeniallyBlock(blocks.StructBlock): id = blocks.TextBlock() class ThinglinkBlock(blocks.StructBlock): id = blocks.TextBlock() class SectionTitleBlock(blocks.StructBlock): text = blocks.TextBlock() class SubtitleBlock(blocks.StructBlock): text = blocks.TextBlock() class InstrumentTextBlock(blocks.StructBlock): class Meta: icon = "doc-full" text = blocks.RichTextBlock(features=INSTRUMENTS_RICH_TEXT_FEATURES) class ModuleRoomSlugBlock(blocks.StructBlock): class Meta: icon = "link" title = blocks.TextBlock() class InstructionBlock(blocks.StructBlock): class Meta: icon = "help" url = blocks.URLBlock(required=False) text = blocks.TextBlock(required=False) document = DocumentChooserBlock(required=False) # 'text_block' 'task' 'basic_knowledge' 'student_entry' 'image_block' # # url = blocks.URLBlock() # document = DocumentChooserBlock()