Browse Source

Apply DraftStateMixin and RevisionMixin to Person model

Sage Abdullah 2 years ago
parent
commit
f381355cfe

+ 90 - 0
bakerydemo/base/migrations/0012_person_expire_at_person_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", "0011_footertext_expire_at_footertext_expired_and_more"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="person",
+            name="expire_at",
+            field=models.DateTimeField(
+                blank=True, null=True, verbose_name="expiry date/time"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            name="expired",
+            field=models.BooleanField(
+                default=False, editable=False, verbose_name="expired"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            name="first_published_at",
+            field=models.DateTimeField(
+                blank=True, db_index=True, null=True, verbose_name="first published at"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            name="go_live_at",
+            field=models.DateTimeField(
+                blank=True, null=True, verbose_name="go live date/time"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            name="has_unpublished_changes",
+            field=models.BooleanField(
+                default=False, editable=False, verbose_name="has unpublished changes"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            name="last_published_at",
+            field=models.DateTimeField(
+                editable=False, null=True, verbose_name="last published at"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            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="person",
+            name="live",
+            field=models.BooleanField(
+                default=True, editable=False, verbose_name="live"
+            ),
+        ),
+        migrations.AddField(
+            model_name="person",
+            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",
+            ),
+        ),
+    ]

+ 1 - 1
bakerydemo/base/models.py

@@ -26,7 +26,7 @@ from .blocks import BaseStreamBlock
 
 
 @register_snippet
-class Person(index.Indexed, ClusterableModel):
+class Person(DraftStateMixin, RevisionMixin, index.Indexed, ClusterableModel):
     """
     A Django model to store Person objects.
     It uses the `@register_snippet` decorator to allow it to be accessible

+ 2 - 3
bakerydemo/blog/models.py

@@ -13,6 +13,7 @@ from wagtail.models import Orderable, Page
 from wagtail.search import index
 
 from bakerydemo.base.blocks import BaseStreamBlock
+from bakerydemo.base.models import Person
 
 
 class BlogPersonRelationship(Orderable, models.Model):
@@ -94,9 +95,7 @@ class BlogPage(Page):
         with a loop on the template. If we tried to access the blog_person_
         relationship directly we'd print `blog.BlogPersonRelationship.None`
         """
-        authors = [n.person for n in self.blog_person_relationship.all()]
-
-        return authors
+        return Person.objects.filter(live=True, person_blog_relationship__page=self)
 
     @property
     def get_tags(self):