Ver código fonte

Apply DraftStateMixin and RevisionMixin to FooterText model

Sage Abdullah 2 anos atrás
pai
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.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

+ 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)
 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,