From f27ed416ea9ae6d291444b140b5987cba80574f7 Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Thu, 20 Oct 2022 09:56:03 +0100 Subject: [PATCH] Apply DraftStateMixin and RevisionMixin to FooterText model --- ...t_expire_at_footertext_expired_and_more.py | 90 +++++++++++++++++++ bakerydemo/base/models.py | 4 +- .../base/templatetags/navigation_tags.py | 5 +- 3 files changed, 95 insertions(+), 4 deletions(-) create mode 100644 bakerydemo/base/migrations/0011_footertext_expire_at_footertext_expired_and_more.py diff --git a/bakerydemo/base/migrations/0011_footertext_expire_at_footertext_expired_and_more.py b/bakerydemo/base/migrations/0011_footertext_expire_at_footertext_expired_and_more.py new file mode 100644 index 0000000..0b4655b --- /dev/null +++ b/bakerydemo/base/migrations/0011_footertext_expire_at_footertext_expired_and_more.py @@ -0,0 +1,90 @@ +# Generated by Django 4.1.2 on 2022-10-20 13:37 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailcore", "0077_alter_revision_user"), + ("base", "0010_rename_people_person"), + ] + + operations = [ + migrations.AddField( + model_name="footertext", + name="expire_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="expiry date/time" + ), + ), + migrations.AddField( + model_name="footertext", + name="expired", + field=models.BooleanField( + default=False, editable=False, verbose_name="expired" + ), + ), + migrations.AddField( + model_name="footertext", + name="first_published_at", + field=models.DateTimeField( + blank=True, db_index=True, null=True, verbose_name="first published at" + ), + ), + migrations.AddField( + model_name="footertext", + name="go_live_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="go live date/time" + ), + ), + migrations.AddField( + model_name="footertext", + name="has_unpublished_changes", + field=models.BooleanField( + default=False, editable=False, verbose_name="has unpublished changes" + ), + ), + migrations.AddField( + model_name="footertext", + name="last_published_at", + field=models.DateTimeField( + editable=False, null=True, verbose_name="last published at" + ), + ), + migrations.AddField( + model_name="footertext", + name="latest_revision", + field=models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailcore.revision", + verbose_name="latest revision", + ), + ), + migrations.AddField( + model_name="footertext", + name="live", + field=models.BooleanField( + default=True, editable=False, verbose_name="live" + ), + ), + migrations.AddField( + model_name="footertext", + name="live_revision", + field=models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="+", + to="wagtailcore.revision", + verbose_name="live revision", + ), + ), + ] diff --git a/bakerydemo/base/models.py b/bakerydemo/base/models.py index 04c1302..c0f68cc 100644 --- a/bakerydemo/base/models.py +++ b/bakerydemo/base/models.py @@ -6,7 +6,7 @@ from modelcluster.models import ClusterableModel from wagtail.admin.panels import FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField from wagtail.fields import RichTextField, StreamField -from wagtail.models import Collection, Page +from wagtail.models import Collection, DraftStateMixin, Page, RevisionMixin from wagtail.search import index from wagtail.snippets.models import register_snippet @@ -79,7 +79,7 @@ class Person(index.Indexed, ClusterableModel): @register_snippet -class FooterText(models.Model): +class FooterText(DraftStateMixin, RevisionMixin, models.Model): """ This provides editable text for the site footer. Again it uses the decorator `register_snippet` to allow it to be accessible via the admin. It is made diff --git a/bakerydemo/base/templatetags/navigation_tags.py b/bakerydemo/base/templatetags/navigation_tags.py index 99fd7e6..5f149d1 100644 --- a/bakerydemo/base/templatetags/navigation_tags.py +++ b/bakerydemo/base/templatetags/navigation_tags.py @@ -97,8 +97,9 @@ def breadcrumbs(context): @register.inclusion_tag("base/include/footer_text.html", takes_context=True) def get_footer_text(context): footer_text = "" - if FooterText.objects.first() is not None: - footer_text = FooterText.objects.first().body + if not footer_text: + instance = FooterText.objects.filter(live=True).first() + footer_text = instance.body if instance else "" return { "footer_text": footer_text,