diff --git a/opentech/news/migrations/0003_newspageauthor.py b/opentech/news/migrations/0003_newspageauthor.py new file mode 100644 index 0000000000000000000000000000000000000000..e6835c505ddb98c98100f9301074413194dd4477 --- /dev/null +++ b/opentech/news/migrations/0003_newspageauthor.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.8 on 2018-01-08 12:05 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('wagtailcore', '0040_page_draft_title'), + ('news', '0002_add_header_image'), + ] + + operations = [ + migrations.CreateModel( + name='NewsPageAuthor', + 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)), + ('author', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailcore.Page')), + ('source_page', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='authors', to='news.NewsPage')), + ], + options={ + 'ordering': ['sort_order'], + 'abstract': False, + }, + ), + ] diff --git a/opentech/news/models.py b/opentech/news/models.py index 978efefa0e2dbdbea2fb2d94920385a9be667155..7210cdbcd89f7d640692d301787bcc58bd6f5b62 100644 --- a/opentech/news/models.py +++ b/opentech/news/models.py @@ -5,9 +5,13 @@ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from modelcluster.fields import ParentalKey +from wagtail.wagtailcore.models import Orderable from wagtail.wagtailcore.fields import StreamField from wagtail.wagtailadmin.edit_handlers import ( - StreamFieldPanel, FieldPanel, InlinePanel + InlinePanel, + FieldPanel, + PageChooserPanel, + StreamFieldPanel, ) from wagtail.wagtailsearch import index @@ -48,6 +52,24 @@ class NewsPageRelatedPage(RelatedPage): ) +class NewsPageAuthor(Orderable): + source_page = ParentalKey( + 'news.NewsPage', + related_name='authors' + ) + author = models.ForeignKey( + 'wagtailcore.Page', + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name='+', + ) + + panels = [ + PageChooserPanel('author', 'people.PersonPage') + ] + + class NewsPage(BasePage): subpage_types = [] parent_page_types = ['NewsIndex'] @@ -68,6 +90,7 @@ class NewsPage(BasePage): content_panels = BasePage.content_panels + [ FieldPanel('publication_date'), + InlinePanel('authors', label="Authors"), FieldPanel('introduction'), StreamFieldPanel('body'), InlinePanel('news_types', label="News types"), diff --git a/opentech/news/templates/news/news_page.html b/opentech/news/templates/news/news_page.html index 1fe1d6b8940c65abc199b8d1e8be82f11531ba7c..c51afac6c3058dc158e471f09b033ff3592bfa21 100644 --- a/opentech/news/templates/news/news_page.html +++ b/opentech/news/templates/news/news_page.html @@ -5,6 +5,11 @@ <div class="wrapper wrapper--small"> <h1>{{ page.title }}</h1> + + {% for author in page.authors.all %} + <p><a href="{% pageurl author.author %}">{{ author.author }}</a><p> + {% endfor %} + <p>{{ page.introduction }}</p> <section class="main-body">