diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 86d9e9bb68..277c4ac23f 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -33,6 +33,7 @@ Changelog * Fix: `RichText` values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage) * Fix: wagtailforms no longer assumes an .html extension when determining the landing page template filename (kakulukia) * Fix: Fixed styling glitch on bi-colour icon + text buttons in Chrome (Janneke Janssen) + * Fix: StreamField can now be used in an InlinePanel (Gagaro) 1.5.3 (18.07.2016) @@ -46,6 +47,7 @@ Changelog * Fixed regression in 1.5.1 on editing external links (Stephen Rice) + 1.5.1 (07.06.2016) ~~~~~~~~~~~~~~~~~~ diff --git a/docs/releases/1.6.rst b/docs/releases/1.6.rst index 7c62e8e319..afdf6f02da 100644 --- a/docs/releases/1.6.rst +++ b/docs/releases/1.6.rst @@ -63,6 +63,7 @@ Bug fixes * ``RichText`` values can now be correctly evaluated as booleans (Mike Dingjan, Bertrand Bordage) * wagtailforms no longer assumes an .html extension when determining the landing page template filename (kakulukia) * Fixed styling glitch on bi-colour icon + text buttons in Chrome (Janneke Janssen) + * StreamField can now be used in an InlinePanel (Gagaro) Upgrade considerations diff --git a/wagtail/tests/testapp/migrations/0008_inlinestreampage_inlinestreampagesection.py b/wagtail/tests/testapp/migrations/0008_inlinestreampage_inlinestreampagesection.py new file mode 100644 index 0000000000..c36817a739 --- /dev/null +++ b/wagtail/tests/testapp/migrations/0008_inlinestreampage_inlinestreampagesection.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.8 on 2016-07-19 15:47 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields +import wagtail.wagtailcore.blocks +import wagtail.wagtailcore.fields +import wagtail.wagtailimages.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('wagtailcore', '0029_unicode_slugfield_dj19'), + ('tests', '0007_jadeformpage'), + ] + + operations = [ + migrations.CreateModel( + name='InlineStreamPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + migrations.CreateModel( + name='InlineStreamPageSection', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sort_order', models.IntegerField(blank=True, editable=False, null=True)), + ('body', wagtail.wagtailcore.fields.StreamField((('text', wagtail.wagtailcore.blocks.CharBlock()), ('rich_text', wagtail.wagtailcore.blocks.RichTextBlock()), ('image', wagtail.wagtailimages.blocks.ImageChooserBlock())))), + ('page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='sections', to='tests.InlineStreamPage')), + ], + options={ + 'abstract': False, + 'ordering': ['sort_order'], + }, + ), + ] diff --git a/wagtail/tests/testapp/models.py b/wagtail/tests/testapp/models.py index 2d749d7c34..db968f1101 100644 --- a/wagtail/tests/testapp/models.py +++ b/wagtail/tests/testapp/models.py @@ -753,3 +753,22 @@ class SectionedRichTextPage(Page): FieldPanel('title', classname="full title"), InlinePanel('sections') ] + + +class InlineStreamPageSection(Orderable): + page = ParentalKey('tests.InlineStreamPage', related_name='sections', on_delete=models.CASCADE) + body = StreamField([ + ('text', CharBlock()), + ('rich_text', RichTextBlock()), + ('image', ImageChooserBlock()), + ]) + panels = [ + StreamFieldPanel('body') + ] + + +class InlineStreamPage(Page): + content_panels = [ + FieldPanel('title', classname="full title"), + InlinePanel('sections') + ] diff --git a/wagtail/wagtailadmin/edit_handlers.py b/wagtail/wagtailadmin/edit_handlers.py index 93ba79b336..3dea74bb9a 100644 --- a/wagtail/wagtailadmin/edit_handlers.py +++ b/wagtail/wagtailadmin/edit_handlers.py @@ -621,6 +621,10 @@ class BaseInlinePanel(EditHandler): } } + @classmethod + def html_declarations(cls): + return cls.get_child_edit_handler_class().html_declarations() + def __init__(self, instance=None, form=None): super(BaseInlinePanel, self).__init__(instance=instance, form=form) diff --git a/wagtail/wagtailadmin/tests/test_pages_views.py b/wagtail/wagtailadmin/tests/test_pages_views.py index ce0ea28ed2..63a9405ec2 100644 --- a/wagtail/wagtailadmin/tests/test_pages_views.py +++ b/wagtail/wagtailadmin/tests/test_pages_views.py @@ -3044,3 +3044,18 @@ class TestInlinePanelMedia(TestCase, WagtailTestUtils): response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'sectionedrichtextpage', homepage.id))) self.assertEqual(response.status_code, 200) self.assertContains(response, 'wagtailadmin/js/hallo-bootstrap.js') + + +class TestInlineStreamField(TestCase, WagtailTestUtils): + """ + Test that streamfields inside an inline child work + """ + def test_inline_streamfield(self): + homepage = Page.objects.get(id=2) + self.login() + + response = self.client.get(reverse('wagtailadmin_pages:add', args=('tests', 'inlinestreampage', homepage.id))) + self.assertEqual(response.status_code, 200) + + # response should include HTML declarations for streamfield child blocks + self.assertContains(response, '