from wagtail.wagtailcore import blocks from wagtail.wagtaildocs.blocks import DocumentChooserBlock from wagtail.wagtailembeds.blocks import EmbedBlock from wagtail.wagtailimages.blocks import ImageChooserBlock from wagtail.wagtailsnippets.blocks import SnippetChooserBlock class ImageBlock(blocks.StructBlock): image = ImageChooserBlock() caption = blocks.CharBlock(required=False) class Meta: icon = "image" template = "blocks/image_block.html" class DocumentBlock(blocks.StructBlock): document = DocumentChooserBlock() title = blocks.CharBlock(required=False) class Meta: icon = "doc-full-inverse" template = "blocks/document_block.html" class QuoteBlock(blocks.StructBlock): quote = blocks.CharBlock(classname="title") citation_link = blocks.URLBlock(required=False) class Meta: icon = "openquote" template = "blocks/quote_block.html" # Main streamfield block to be inherited by Pages class StoryBlock(blocks.StreamBlock): heading = blocks.CharBlock(classname="full title", icon='title') paragraph = blocks.RichTextBlock() image = ImageBlock() quote = QuoteBlock() embed = EmbedBlock() call_to_action = SnippetChooserBlock( 'utils.CallToActionSnippet', template="blocks/call_to_action_block.html" ) document = DocumentBlock() class Meta: template = "blocks/stream_block.html"