From 8c7e1871bb926211f6014c7b0071b28ee562dad4 Mon Sep 17 00:00:00 2001 From: Merlin Buczek Date: Wed, 11 Sep 2019 11:21:04 +0200 Subject: [PATCH] Make news date editable --- .../0018_newsentry_show_in_main_news.py | 18 ++++++++++++++++++ .../migrations/0019_auto_20190911_1119.py | 19 +++++++++++++++++++ mpicms/news/models.py | 18 +++++++++++++++--- 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 mpicms/news/migrations/0018_newsentry_show_in_main_news.py create mode 100644 mpicms/news/migrations/0019_auto_20190911_1119.py diff --git a/mpicms/news/migrations/0018_newsentry_show_in_main_news.py b/mpicms/news/migrations/0018_newsentry_show_in_main_news.py new file mode 100644 index 0000000..e25ebdd --- /dev/null +++ b/mpicms/news/migrations/0018_newsentry_show_in_main_news.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.4 on 2019-09-11 09:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0017_auto_20190909_1515'), + ] + + operations = [ + migrations.AddField( + model_name='newsentry', + name='show_in_main_news', + field=models.BooleanField(default=False), + ), + ] diff --git a/mpicms/news/migrations/0019_auto_20190911_1119.py b/mpicms/news/migrations/0019_auto_20190911_1119.py new file mode 100644 index 0000000..485463f --- /dev/null +++ b/mpicms/news/migrations/0019_auto_20190911_1119.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.4 on 2019-09-11 09:19 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('news', '0018_newsentry_show_in_main_news'), + ] + + operations = [ + migrations.AlterField( + model_name='newsentry', + name='date', + field=models.DateField(default=datetime.date.today, verbose_name='date'), + ), + ] diff --git a/mpicms/news/models.py b/mpicms/news/models.py index a22fb85..1ab1e3c 100644 --- a/mpicms/news/models.py +++ b/mpicms/news/models.py @@ -1,3 +1,5 @@ +from datetime import date + from django.db import models from django.utils.translation import gettext_lazy as _ from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator @@ -6,6 +8,7 @@ from wagtail.search import index from wagtail.api import APIField from wagtail.images.edit_handlers import ImageChooserPanel +from wagtail.admin.edit_handlers import FieldPanel from mpicms.base.models import CategoryMixin from mpicms.base.mixins import BasePage, BodyMixin @@ -43,9 +46,12 @@ def is_news_root(self): @property def news_items(self): + items = NewsEntry.objects.child_of(self).live().order_by('-date') if self.is_news_root: - return NewsEntry.objects.live().order_by('-date') - return NewsEntry.objects.child_of(self).live().order_by('-date') + imported_news = NewsEntry.objects.live().filter(show_in_main_news=True) + combined_items = list(items) + list(imported_news) + items = sorted(combined_items, key=lambda x: x.date, reverse=True) + return items class Meta: # noqa @@ -54,7 +60,7 @@ class Meta: # noqa class NewsEntry(CategoryMixin, BodyMixin, BasePage): - date = models.DateField(_("post date"), auto_now_add=True) + date = models.DateField(_("date"), default=date.today) header_image = models.ForeignKey( 'wagtailimages.Image', null=True, @@ -62,13 +68,19 @@ class NewsEntry(CategoryMixin, BodyMixin, BasePage): on_delete=models.SET_NULL, related_name='+' ) + show_in_main_news = models.BooleanField(default=False) show_in_menus_default = False content_panels = Page.content_panels + BodyMixin.content_panels + [ + FieldPanel('date'), ImageChooserPanel('header_image'), ] + promote_panels = Page.promote_panels + [ + FieldPanel('show_in_main_news') + ] + search_fields = Page.search_fields + BodyMixin.search_fields + [ index.FilterField('date') ]