diff --git a/publichealth/home/custom_filters.py b/publichealth/home/custom_filters.py new file mode 100644 index 0000000..970546e --- /dev/null +++ b/publichealth/home/custom_filters.py @@ -0,0 +1,8 @@ +from django import template +from html import unescape + +register = template.Library() + +@register.filter +def ph_html_decode(value): + return unescape(str(value)) diff --git a/publichealth/home/migrations/0035_auto_20230515_1447.py b/publichealth/home/migrations/0035_auto_20230515_1447.py new file mode 100644 index 0000000..dd08cbe --- /dev/null +++ b/publichealth/home/migrations/0035_auto_20230515_1447.py @@ -0,0 +1,32 @@ +# Generated by Django 3.2.13 on 2023-05-15 12:47 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.embeds.blocks +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0034_auto_20220714_1145'), + ] + + operations = [ + migrations.AlterField( + model_name='articlepage', + name='body_de', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.embeds.blocks.EmbedBlock())], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_en', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.embeds.blocks.EmbedBlock())], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_fr', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.embeds.blocks.EmbedBlock())], blank=True, null=True), + ), + ] diff --git a/publichealth/home/migrations/0036_auto_20230515_1556.py b/publichealth/home/migrations/0036_auto_20230515_1556.py new file mode 100644 index 0000000..0fe63ff --- /dev/null +++ b/publichealth/home/migrations/0036_auto_20230515_1556.py @@ -0,0 +1,36 @@ +# Generated by Django 3.2.13 on 2023-05-15 13:56 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0035_auto_20230515_1447'), + ] + + operations = [ + migrations.AddField( + model_name='articlepage', + name='html_content', + field=wagtail.core.fields.RichTextField(blank=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_de', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media'))], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_en', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media'))], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_fr', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media'))], blank=True, null=True), + ), + ] diff --git a/publichealth/home/migrations/0037_auto_20230516_1241.py b/publichealth/home/migrations/0037_auto_20230516_1241.py new file mode 100644 index 0000000..03ad22e --- /dev/null +++ b/publichealth/home/migrations/0037_auto_20230516_1241.py @@ -0,0 +1,35 @@ +# Generated by Django 3.2.13 on 2023-05-16 10:41 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0036_auto_20230515_1556'), + ] + + operations = [ + migrations.RemoveField( + model_name='articlepage', + name='html_content', + ), + migrations.AlterField( + model_name='articlepage', + name='body_de', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.core.blocks.RichTextBlock())], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_en', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.core.blocks.RichTextBlock())], blank=True, null=True), + ), + migrations.AlterField( + model_name='articlepage', + name='body_fr', + field=wagtail.core.fields.StreamField([('paragraph', wagtail.core.blocks.RichTextBlock()), ('section', wagtail.core.blocks.CharBlock(form_classname='full title')), ('info', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.CharBlock(required=True)), ('photo', wagtail.images.blocks.ImageChooserBlock(required=True)), ('summary', wagtail.core.blocks.RichTextBlock(required=True)), ('action', wagtail.core.blocks.CharBlock(required=False)), ('url', wagtail.core.blocks.URLBlock(required=False))], icon='help')), ('media', wagtail.core.blocks.ChoiceBlock(choices=[('gallery', 'Image gallery')], icon='media')), ('iframe', wagtail.core.blocks.RichTextBlock())], blank=True, null=True), + ), + ] diff --git a/publichealth/home/models/models.py b/publichealth/home/models/models.py index 1ad4c20..5d04089 100644 --- a/publichealth/home/models/models.py +++ b/publichealth/home/models/models.py @@ -185,7 +185,8 @@ class ArticlePage(Page): ('info', InfoBlock(icon='help')), ('media', ChoiceBlock(choices=[ ('gallery', 'Image gallery'), - ], icon='media')) + ], icon='media')), + ('iframe', RichTextBlock()) ], null=True, blank=True) body_fr = StreamField([ ('paragraph', RichTextBlock()), @@ -193,7 +194,8 @@ class ArticlePage(Page): ('info', InfoBlock(icon='help')), ('media', ChoiceBlock(choices=[ ('gallery', 'Image gallery'), - ], icon='media')) + ], icon='media')), + ('iframe', RichTextBlock()) ], null=True, blank=True) body_en = StreamField([ ('paragraph', RichTextBlock()), @@ -201,7 +203,8 @@ class ArticlePage(Page): ('info', InfoBlock(icon='help')), ('media', ChoiceBlock(choices=[ ('gallery', 'Image gallery'), - ], icon='media')) + ], icon='media')), + ('iframe', RichTextBlock()) ], null=True, blank=True) trans_body = TranslatedField( 'body_de', diff --git a/publichealth/home/templates/home/page_content.html b/publichealth/home/templates/home/page_content.html index a2c4165..589c7c4 100644 --- a/publichealth/home/templates/home/page_content.html +++ b/publichealth/home/templates/home/page_content.html @@ -1,4 +1,4 @@ -{% load wagtailcore_tags wagtailimages_tags %} +{% load wagtailcore_tags wagtailimages_tags custom_filters %} {% if page.feed_image %}
@@ -23,6 +23,10 @@ {% if block.value == 'gallery' %} {% include 'home/photo_gallery.html' %} {% endif %} + {% elif block.block_type == 'iframe' %} + {% autoescape off %} + {{ block.value|richtext|ph_html_decode}} + {% endautoescape %} {% elif block.block_type != 'info' %}

{% include_block block %} diff --git a/publichealth/settings/base.py b/publichealth/settings/base.py index 6d4c5df..f66b723 100644 --- a/publichealth/settings/base.py +++ b/publichealth/settings/base.py @@ -109,6 +109,9 @@ TEMPLATES = [ 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], + 'libraries': { + 'custom_filters': 'publichealth.home.custom_filters', + }, }, }, ]