blocks.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from wagtail.wagtailimages.blocks import ImageChooserBlock
  2. from wagtail.wagtailembeds.blocks import EmbedBlock
  3. from wagtail.wagtailcore.blocks import (
  4. StructBlock,
  5. TextBlock,
  6. StreamBlock,
  7. RichTextBlock,
  8. CharBlock,
  9. ListBlock,
  10. ChoiceBlock,
  11. PageChooserBlock
  12. )
  13. class ImageBlock(StructBlock):
  14. image = ImageChooserBlock(required=True)
  15. caption = CharBlock(required=False)
  16. attribution = CharBlock(required=False)
  17. class Meta:
  18. icon = 'image'
  19. template = "blocks/image_block.html"
  20. class HeadingBlock(StructBlock):
  21. heading_text = CharBlock(classname="title", required=True)
  22. size = ChoiceBlock(choices=[
  23. ('', 'Select a header size'),
  24. ('h2', 'H2'),
  25. ('h3', 'H3'),
  26. ('h4', 'H4')
  27. ], blank=True, required=False)
  28. class Meta:
  29. icon = "title"
  30. template = "blocks/heading_block.html"
  31. class BlockQuote(StructBlock):
  32. text = TextBlock(),
  33. attribute_name = CharBlock(
  34. blank=True, required=False, label='e.g. Guy Picciotto')
  35. class Meta:
  36. icon = "fa-quote-left"
  37. template = "blocks/blockquote.html"
  38. # StreamBlocks
  39. class BaseStreamBlock(StreamBlock):
  40. heading_block = HeadingBlock()
  41. paragraph_block = RichTextBlock(
  42. icon="fa-paragraph",
  43. template="blocks/paragraph_block.html"
  44. )
  45. image_block = ImageBlock()
  46. block_quote = BlockQuote()
  47. embed_block = EmbedBlock(
  48. help_text='Insert an embed URL e.g https://www.youtube.com/embed/SGJFWirQ3ks',
  49. icon="fa-s15",
  50. template="blocks/embed_block.html")