{% for block in page.body %} {% include_block block %} {% endfor %} -
diff --git a/config/settings/base.py b/config/settings/base.py index bc6f4b4..569a13b 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -71,6 +71,7 @@ 'modelcluster', 'taggit', 'rest_framework', + 'wagtailvideos', ] LOCAL_APPS = [ 'mpicms.base.apps.BaseAppConfig', diff --git a/mpicms/base/blocks.py b/mpicms/base/blocks.py index 41dee5f..c23927d 100644 --- a/mpicms/base/blocks.py +++ b/mpicms/base/blocks.py @@ -1,9 +1,11 @@ from django.utils.translation import gettext_lazy as _ +from django.utils.functional import cached_property from wagtail.core import blocks from wagtail.snippets.blocks import SnippetChooserBlock from wagtail.contrib.table_block.blocks import TableBlock as WagtailTableBlock - +import wagtailvideos.models +import wagtailvideos.widgets class ContactBlock(blocks.StructBlock): contact = SnippetChooserBlock('personal.Contact', label=_("Contact")) @@ -24,11 +26,27 @@ class Meta: # noqa template = 'base/blocks/table_block.html' +class VideoBlock(blocks.ChooserBlock): + @cached_property + def target_model(self): + return wagtailvideos.models.Video + + @cached_property + def widget(self): + return wagtailvideos.widgets.AdminVideoChooser + + def render_basic(self, value, context=None): + return value.video_tag(attrs={"controls": True}) if value else "" + + class Meta: + icon = "fa-play" + class ContentBlock(blocks.StreamBlock): richtext = blocks.RichTextBlock(label=_('Editor')) markdown = MarkdownBlock(label=_('Raw Markdown')) table = TableBlock(label=_('Table')) contact = ContactBlock(label=_('Contact')) + video = VideoBlock(label=_('Video')) class Meta: # noqa label = _('content') diff --git a/mpicms/base/migrations/0053_auto_20210114_1926.py b/mpicms/base/migrations/0053_auto_20210114_1926.py new file mode 100644 index 0000000..d32fb41 --- /dev/null +++ b/mpicms/base/migrations/0053_auto_20210114_1926.py @@ -0,0 +1,47 @@ +# Generated by Django 3.1 on 2021-01-14 18:26 + +from django.db import migrations +import mpicms.base.blocks +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.snippets.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0052_formfield_clean_name'), + ] + + operations = [ + migrations.AlterField( + model_name='homepage', + name='body', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='homepage', + name='body_de', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='homepage', + name='body_en', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='wikipage', + name='body', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='wikipage', + name='body_de', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='wikipage', + name='body_en', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + ] diff --git a/mpicms/events/migrations/0014_auto_20210114_1926.py b/mpicms/events/migrations/0014_auto_20210114_1926.py new file mode 100644 index 0000000..8832f0e --- /dev/null +++ b/mpicms/events/migrations/0014_auto_20210114_1926.py @@ -0,0 +1,32 @@ +# Generated by Django 3.1 on 2021-01-14 18:26 + +from django.db import migrations +import mpicms.base.blocks +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.snippets.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0013_auto_20200119_1857'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='body', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='event', + name='body_de', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='event', + name='body_en', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + ] diff --git a/mpicms/news/migrations/0024_auto_20210114_1926.py b/mpicms/news/migrations/0024_auto_20210114_1926.py new file mode 100644 index 0000000..4930fa2 --- /dev/null +++ b/mpicms/news/migrations/0024_auto_20210114_1926.py @@ -0,0 +1,32 @@ +# Generated by Django 3.1 on 2021-01-14 18:26 + +from django.db import migrations +import mpicms.base.blocks +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.snippets.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0023_auto_20200304_1706'), + ] + + operations = [ + migrations.AlterField( + model_name='newsentry', + name='body', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='newsentry', + name='body_de', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + migrations.AlterField( + model_name='newsentry', + name='body_en', + field=wagtail.core.fields.StreamField([('richtext', wagtail.core.blocks.RichTextBlock(label='Editor')), ('markdown', mpicms.base.blocks.MarkdownBlock(label='Raw Markdown')), ('table', mpicms.base.blocks.TableBlock(label='Table')), ('contact', wagtail.core.blocks.StructBlock([('contact', wagtail.snippets.blocks.SnippetChooserBlock('personal.Contact', label='Contact')), ('information', wagtail.core.blocks.TextBlock(label='Information', required=False))], label='Contact')), ('video', mpicms.base.blocks.VideoBlock(label='Video'))], blank=True, null=True, verbose_name='content'), + ), + ] diff --git a/mpicms/templates/base/wiki_page.html b/mpicms/templates/base/wiki_page.html index 5871a5d..9ba5975 100644 --- a/mpicms/templates/base/wiki_page.html +++ b/mpicms/templates/base/wiki_page.html @@ -15,10 +15,8 @@
{% for block in page.body %} {% include_block block %} {% endfor %} -