from wagtail.api import APIField from wagtail.blocks import ( CharBlock, ChoiceBlock, RichTextBlock, StreamBlock, StructBlock, ) from wagtail.embeds.blocks import EmbedBlock from wagtail.images.blocks import ImageChooserBlock class ImageBlock(StructBlock): image = ImageChooserBlock(required=True) caption = CharBlock(required=False) attribution = CharBlock(required=False) api_fields = [ APIField('image'), # Adds a URL to a rendered thumbnail of the image to the API APIField('caption'), APIField('attribution'), ] class Meta: icon = "image" template = "base/blocks/image_block.html" class HeadingBlock(StructBlock): heading_text = CharBlock(classname="title", required=True) size = ChoiceBlock( choices=[ ("", "Select a heading size"), ("h2", "H2"), ("h3", "H3"), ("h4", "H4"), ], blank=True, required=False, ) class Meta: icon = "title" template = "base/blocks/heading_block.html" class BaseStreamBlock(StreamBlock): heading_block = HeadingBlock() paragraph_block = RichTextBlock(icon="pilcrow") image_block = ImageBlock() embed_block = EmbedBlock( help_text="Insert a URL to embed. For example, https://www.youtube.com/watch?v=SGJFWirQ3ks", icon="media", )