blocks.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from wagtail.contrib.typed_table_block.blocks import TypedTableBlock
  2. from wagtail.core.blocks import (
  3. CharBlock,
  4. ChoiceBlock,
  5. FloatBlock,
  6. ListBlock,
  7. PageChooserBlock,
  8. RichTextBlock,
  9. StreamBlock,
  10. StructBlock,
  11. TextBlock,
  12. URLBlock,
  13. )
  14. from wagtail.documents.blocks import DocumentChooserBlock
  15. from wagtail.embeds.blocks import EmbedBlock
  16. from wagtail.images.blocks import ImageChooserBlock
  17. class RecipeTableBlock(StructBlock):
  18. title = CharBlock()
  19. description = TextBlock()
  20. table = TypedTableBlock(
  21. [
  22. ("text", CharBlock()),
  23. ("numeric", FloatBlock()),
  24. ("rich_text", RichTextBlock()),
  25. ("image", ImageChooserBlock()),
  26. ]
  27. )
  28. class RecipeStreamBlock(StreamBlock):
  29. page = PageChooserBlock()
  30. embed = EmbedBlock()
  31. image = ImageChooserBlock()
  32. BLOCKS = [
  33. ("char", CharBlock()),
  34. (
  35. "choice",
  36. ChoiceBlock(choices=[("M", "Medium"), ("L", "Large"), ("XL", "Extra large")]),
  37. ),
  38. ("list", ListBlock(child_block=CharBlock())),
  39. ("page", PageChooserBlock()),
  40. ("text", TextBlock()),
  41. ("rich_text", RichTextBlock()),
  42. ("url", URLBlock()),
  43. ("document", DocumentChooserBlock()),
  44. ("embed", EmbedBlock()),
  45. ("image", ImageChooserBlock()),
  46. ("table", RecipeTableBlock()),
  47. ("stream", RecipeStreamBlock()),
  48. ]