diff --git a/project/common/blocks.py b/project/common/blocks.py new file mode 100644 index 0000000..3401db5 --- /dev/null +++ b/project/common/blocks.py @@ -0,0 +1,15 @@ +from wagtail.core.fields import StreamField +from wagtail.core import blocks +from wagtail.images.blocks import ImageChooserBlock +from wagtail.documents.blocks import DocumentChooserBlock +from wagtail.embeds.blocks import EmbedBlock +from wagtailmarkdown.blocks import MarkdownBlock + +def build_stream_field(): + return StreamField([ + ('document', DocumentChooserBlock()), + ('image', ImageChooserBlock()), + ('markdown', MarkdownBlock()), + ('paragraph', blocks.RichTextBlock()), + ('raw_html', blocks.RawHTMLBlock(label="Raw HTML")), +]) diff --git a/project/pages/__init__.py b/project/pages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/project/pages/migrations/0001_initial.py b/project/pages/migrations/0001_initial.py new file mode 100644 index 0000000..f8be54f --- /dev/null +++ b/project/pages/migrations/0001_initial.py @@ -0,0 +1,54 @@ +# Generated by Django 2.0.7 on 2018-07-25 08:02 + +from django.db import migrations, models +import django.db.models.deletion +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.documents.blocks +import wagtail.images.blocks +import wagtailmarkdown.blocks +import wagtailmetadata.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('wagtailimages', '0020_add-verbose-name'), + ('wagtailcore', '0040_page_draft_title'), + ] + + operations = [ + migrations.CreateModel( + name='SectionIndexPage', + 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')), + ('created', models.DateTimeField(auto_now_add=True)), + ('modified', models.DateTimeField(auto_now=True)), + ('post_date', models.DateTimeField(blank=True, null=True)), + ('body', wagtail.core.fields.StreamField([('document', wagtail.documents.blocks.DocumentChooserBlock()), ('image', wagtail.images.blocks.ImageChooserBlock()), ('markdown', wagtailmarkdown.blocks.MarkdownBlock()), ('paragraph', wagtail.core.blocks.RichTextBlock()), ('raw_html', wagtail.core.blocks.RawHTMLBlock(label='Raw HTML'))])), + ('hide_list', models.BooleanField(default=False)), + ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image')), + ], + options={ + 'abstract': False, + }, + bases=(wagtailmetadata.models.MetadataMixin, 'wagtailcore.page', models.Model), + ), + migrations.CreateModel( + name='SimpleContentPage', + 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')), + ('created', models.DateTimeField(auto_now_add=True)), + ('modified', models.DateTimeField(auto_now=True)), + ('post_date', models.DateTimeField(blank=True, null=True)), + ('body', wagtail.core.fields.StreamField([('document', wagtail.documents.blocks.DocumentChooserBlock()), ('image', wagtail.images.blocks.ImageChooserBlock()), ('markdown', wagtailmarkdown.blocks.MarkdownBlock()), ('paragraph', wagtail.core.blocks.RichTextBlock()), ('raw_html', wagtail.core.blocks.RawHTMLBlock(label='Raw HTML'))])), + ('search_image', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.Image')), + ], + options={ + 'abstract': False, + }, + bases=(wagtailmetadata.models.MetadataMixin, 'wagtailcore.page', models.Model), + ), + ] diff --git a/project/pages/migrations/__init__.py b/project/pages/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/project/pages/models.py b/project/pages/models.py new file mode 100644 index 0000000..9ad2f77 --- /dev/null +++ b/project/pages/models.py @@ -0,0 +1,22 @@ +from django.db import models +from project.common.blocks import build_stream_field +from project.common.models import Entity +from wagtail.admin.edit_handlers import FieldPanel, StreamFieldPanel + + +class SimpleContentPage(Entity): + body = build_stream_field() + + content_panels = Entity.content_panels + [ + StreamFieldPanel('body') + ] + + +class SectionIndexPage(Entity): + body = build_stream_field() + hide_list = models.BooleanField(default=False) + + content_panels = Entity.content_panels + [ + StreamFieldPanel('body'), + FieldPanel('hide_list') +] diff --git a/project/settings.py b/project/settings.py index a113108..f746b3b 100644 --- a/project/settings.py +++ b/project/settings.py @@ -44,6 +44,7 @@ INSTALLED_APPS = [ 'project.home', 'project.search', 'project.common', + 'project.pages', 'wagtail.contrib.forms', 'wagtail.contrib.redirects',