From 7815be8ae07a92f3e58f57efd2d9ef5b648b01ed Mon Sep 17 00:00:00 2001 From: Sage Abdullah Date: Thu, 20 Oct 2022 11:51:38 +0100 Subject: [PATCH] Apply DraftStateMixin and RevisionMixin to BreadIngredient model --- ...ire_at_breadingredient_expired_and_more.py | 90 +++++++++++++++++++ bakerydemo/breads/models.py | 4 +- bakerydemo/static/css/main.css | 7 ++ bakerydemo/templates/breads/bread_page.html | 11 ++- 4 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 bakerydemo/breads/migrations/0006_breadingredient_expire_at_breadingredient_expired_and_more.py diff --git a/bakerydemo/breads/migrations/0006_breadingredient_expire_at_breadingredient_expired_and_more.py b/bakerydemo/breads/migrations/0006_breadingredient_expire_at_breadingredient_expired_and_more.py new file mode 100644 index 000000000..45219958f --- /dev/null +++ b/bakerydemo/breads/migrations/0006_breadingredient_expire_at_breadingredient_expired_and_more.py @@ -0,0 +1,90 @@ +# Generated by Django 4.1.2 on 2022-10-20 13:38 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailcore", "0077_alter_revision_user"), + ("breads", "0005_breadtype_latest_revision"), + ] + + operations = [ + migrations.AddField( + model_name="breadingredient", + name="expire_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="expiry date/time" + ), + ), + migrations.AddField( + model_name="breadingredient", + name="expired", + field=models.BooleanField( + default=False, editable=False, verbose_name="expired" + ), + ), + migrations.AddField( + model_name="breadingredient", + name="first_published_at", + field=models.DateTimeField( + blank=True, db_index=True, null=True, verbose_name="first published at" + ), + ), + migrations.AddField( + model_name="breadingredient", + name="go_live_at", + field=models.DateTimeField( + blank=True, null=True, verbose_name="go live date/time" + ), + ), + migrations.AddField( + model_name="breadingredient", + name="has_unpublished_changes", + field=models.BooleanField( + default=False, editable=False, verbose_name="has unpublished changes" + ), + ), + migrations.AddField( + model_name="breadingredient", + name="last_published_at", + field=models.DateTimeField( + editable=False, null=True, verbose_name="last published at" + ), + ), + migrations.AddField( + model_name="breadingredient", + 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="breadingredient", + name="live", + field=models.BooleanField( + default=True, editable=False, verbose_name="live" + ), + ), + migrations.AddField( + model_name="breadingredient", + 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/breads/models.py b/bakerydemo/breads/models.py index 3e0127ac8..13db78787 100644 --- a/bakerydemo/breads/models.py +++ b/bakerydemo/breads/models.py @@ -4,7 +4,7 @@ from modelcluster.fields import ParentalManyToManyField from wagtail.admin.panels import FieldPanel, MultiFieldPanel from wagtail.fields import StreamField -from wagtail.models import Page, RevisionMixin +from wagtail.models import DraftStateMixin, Page, RevisionMixin from wagtail.search import index from wagtail.snippets.models import register_snippet @@ -33,7 +33,7 @@ class Meta: @register_snippet -class BreadIngredient(models.Model): +class BreadIngredient(DraftStateMixin, RevisionMixin, models.Model): """ Standard Django model that is displayed as a snippet within the admin due to the `@register_snippet` decorator. We use a new piece of functionality diff --git a/bakerydemo/static/css/main.css b/bakerydemo/static/css/main.css index e7a5cf5f3..28b9a4c2e 100644 --- a/bakerydemo/static/css/main.css +++ b/bakerydemo/static/css/main.css @@ -1236,6 +1236,13 @@ footer { margin: 0 0 20px; } +.bread-detail__meta-ingredient--draft { + color: transparent; + user-select: none; + cursor: help; + text-shadow: 0 0 7px rgb(0 0 0 / 50%); +} + @media (min-width: 992px) { .bread-detail__meta { background-color: var(--cream); diff --git a/bakerydemo/templates/breads/bread_page.html b/bakerydemo/templates/breads/bread_page.html index b61a7cdd9..f85f18f33 100644 --- a/bakerydemo/templates/breads/bread_page.html +++ b/bakerydemo/templates/breads/bread_page.html @@ -39,7 +39,16 @@

Ingredients