From 4847b02c9006612a6532971c9227d5cbf68f9956 Mon Sep 17 00:00:00 2001 From: PCoder Date: Tue, 3 May 2022 15:32:34 +0530 Subject: [PATCH 1/3] Add expire_at field to Entry model --- feedler/models/models.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/feedler/models/models.py b/feedler/models/models.py index 7eb7569..1444b93 100644 --- a/feedler/models/models.py +++ b/feedler/models/models.py @@ -1,9 +1,10 @@ # -*- coding: utf-8 -*- +import datetime from django.db import models from django.utils import translation from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger - +from django.utils.translation import gettext_lazy as _ from wagtail.core.models import Page, Orderable from wagtail.admin.edit_handlers import FieldPanel from wagtail.core.fields import RichTextField @@ -39,6 +40,11 @@ class Entry(models.Model): lang = models.CharField(max_length=2, blank=True, default='', choices=LANGUAGE_CHOICES) content = models.TextField() tags = models.TextField(blank=True) + expire_at = models.DateTimeField( + verbose_name=_("expiry date/time"), + blank=True, + null=True + ) stream = models.ForeignKey(Stream, blank=False, on_delete=models.CASCADE, @@ -68,7 +74,9 @@ class FeedPage(Page): @property def feedentries(self): if self.stream: - entries = Entry.objects.filter(stream=self.stream) + entries = Entry.objects.filter(stream=self.stream).filter( + models.Q(expire_at__isnull=True) | models.Q(expire_at__gt=datetime.datetime.now()) + ) else: entries = Entry.objects.all() # Filter out by chosen language From 2d287dff3280a0f66cb13e03f799a0e36ca46822 Mon Sep 17 00:00:00 2001 From: PCoder Date: Tue, 3 May 2022 15:43:49 +0530 Subject: [PATCH 2/3] Add migration --- feedler/migrations/0009_entry_expire_at.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 feedler/migrations/0009_entry_expire_at.py diff --git a/feedler/migrations/0009_entry_expire_at.py b/feedler/migrations/0009_entry_expire_at.py new file mode 100644 index 0000000..cb54fc0 --- /dev/null +++ b/feedler/migrations/0009_entry_expire_at.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-05-03 10:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('feedler', '0008_auto_20171117_1647'), + ] + + operations = [ + migrations.AddField( + model_name='entry', + name='expire_at', + field=models.DateTimeField(blank=True, null=True, verbose_name='expiry date/time'), + ), + ] From 7d11a440c69089bef80cbd42e9e8ef8ead49e26e Mon Sep 17 00:00:00 2001 From: PCoder Date: Wed, 4 May 2022 10:28:34 +0530 Subject: [PATCH 3/3] Also filter entries by expire_at in the news section of the home page --- publichealth/home/models/models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/publichealth/home/models/models.py b/publichealth/home/models/models.py index 7853dd2..de655aa 100644 --- a/publichealth/home/models/models.py +++ b/publichealth/home/models/models.py @@ -2,6 +2,8 @@ from __future__ import unicode_literals +import datetime + from django.db import models from django.utils import translation from django.conf import settings @@ -320,7 +322,9 @@ class HomePage(Page): @property def newsentries(self): # Get the last few news entries for the home page - entries = Entry.objects.all().order_by('-published') + entries = Entry.objects.filter( + models.Q(expire_at__isnull=True) | models.Q(expire_at__gt=datetime.datetime.now()) + ).all().order_by('-published') # Filter out by current language curlang = translation.get_language() if curlang in ['de']: