Browse Source

Apply DraftStateMixin and RevisionMixin to FooterText model

Sage Abdullah 2 years ago
parent
commit
f27ed416ea

+ 90 - 0
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",
+            ),
+        ),
+    ]

+ 2 - 2
bakerydemo/base/models.py

@@ -6,7 +6,7 @@ from modelcluster.models import ClusterableModel
 from wagtail.admin.panels import FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel
 from wagtail.admin.panels import FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel
 from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField
 from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormField
 from wagtail.fields import RichTextField, StreamField
 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.search import index
 from wagtail.snippets.models import register_snippet
 from wagtail.snippets.models import register_snippet
 
 
@@ -79,7 +79,7 @@ class Person(index.Indexed, ClusterableModel):
 
 
 
 
 @register_snippet
 @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
     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
     `register_snippet` to allow it to be accessible via the admin. It is made

+ 3 - 2
bakerydemo/base/templatetags/navigation_tags.py

@@ -97,8 +97,9 @@ def breadcrumbs(context):
 @register.inclusion_tag("base/include/footer_text.html", takes_context=True)
 @register.inclusion_tag("base/include/footer_text.html", takes_context=True)
 def get_footer_text(context):
 def get_footer_text(context):
     footer_text = ""
     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 {
     return {
         "footer_text": footer_text,
         "footer_text": footer_text,