Add get_scheduled_revision() method to DraftStateMixin

pull/9226/head
Sage Abdullah 2022-08-02 14:32:14 +07:00 zatwierdzone przez Matt Westcott
rodzic 41c8512789
commit 3702132b95
8 zmienionych plików z 91 dodań i 12 usunięć

Wyświetl plik

@ -0,0 +1,4 @@
<svg id="icon-calendar-check" viewBox="0 0 448 512">
<path
d="M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z" />
</svg>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 714 B

Wyświetl plik

@ -0,0 +1,4 @@
<svg id="icon-calendar" viewBox="0 0 448 512">
<path
d="M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z" />
</svg>

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 386 B

Wyświetl plik

@ -95,9 +95,10 @@
{% block bottom %}
{# Workflow Status #}
{% with workflow_state=object.current_workflow_state draft_revision=object.get_latest_revision %}
{% page_permissions object as page_perms %}
{% with workflow_state=object.current_workflow_state draft_revision=object.get_latest_revision scheduled_go_live_at=scheduled_revision.approved_go_live_at scheduled_expire_at=live_object.expire_at expired=live_object.expired draft_go_live_at=object.go_live_at draft_expire_at=object.expire_at %}
{% if workflow_state %}
<div class="w-flex w-space-x-3 w-mt-3">
<div class="w-flex w-space-x-4 w-mt-3">
{% icon name='info-circle' class_name='w-w-4 w-h-4 w-text-info-100 w-shrink-0' %}
<div class="w-label-3 w-flex-1">
{% workflow_status_with_date workflow_state %}
@ -106,13 +107,45 @@
{% endif %}
{# Scheduled publishing #}
{% if draft_revision and draft_revision.approved_go_live_at %}
<div class="w-flex w-space-x-3">
{% icon name='info-circle' class_name='w-w-4 w-h-4 w-text-info-100 w-shrink-0' %}
<div class="w-label-3 w-flex-1">
{% trans 'This will publish at ' %}{{ draft_revision.approved_go_live_at }}
{% if scheduled_go_live_at or scheduled_expire_at and not expired or draft_go_live_at or draft_expire_at %}
<div class="w-mt-3 w-p-4 w-bg-info-50 w-rounded w-flex w-space-x-3">
{% if scheduled_go_live_at or scheduled_expire_at %}
{% icon name='calendar-check' class_name='w-w-4 w-h-4 w-text-info-100' %}
{% else %}
{% icon name='calendar' class_name='w-w-4 w-h-4 w-text-info-100' %}
{% endif %}
<div class="w-flex w-flex-1 w-items-start w-justify-between">
<div class="w-flex w-flex-col w-flex-1 w-pr-5 w-space-y-1 w-help-text">
{% if scheduled_go_live_at %}
<div><span class="w-text-primary">{% trans 'Go-live:' %}</span> {{ scheduled_go_live_at }}</div>
{% endif %}
{% if scheduled_expire_at %}
<div><span class="w-text-primary">{% trans 'Expiry:' %}</span> {{ scheduled_expire_at }}</div>
{% endif %}
{% if draft_go_live_at and draft_go_live_at != scheduled_go_live_at or draft_expire_at and draft_expire_at != scheduled_expire_at %}
<div class="w-label-3">{% trans 'Once published:' %}</div>
{% if draft_go_live_at and draft_go_live_at != scheduled_go_live_at %}
<div><span class="w-text-primary">{% trans 'Go-live:' %}</span> {{ draft_go_live_at }}</div>
{% endif %}
{% if draft_expire_at and draft_expire_at != scheduled_expire_at %}
<div><span class="w-text-primary">{% trans 'Expiry:' %}</span> {{ draft_expire_at }}</div>
{% endif %}
{% endif %}
</div>
{% if not page_perms.page_locked and not in_explorer %}
{% trans 'Edit schedule' as edit_schedule_text %}
{% dialog_toggle class_name='w-bg-transparent w-text-14 w-p-0 w-text-secondary hover:w-text-secondary-600 w-inline-flex w-justify-center w-transition' dialog_id="schedule-publishing-dialog" text=edit_schedule_text %}
{% endif %}
</div>
</div>
{% else %}
<div class="w-flex w-justify-between w-items-center w-w-full w-mt-3">
<div class="w-ml-8 w-pr-4 w-label-3">{% trans 'No publishing schedule set' %}</div>
{% if not page_perms.page_locked and not in_explorer %}
{% trans 'Set schedule' as set_schedule_text %}
{% dialog_toggle class_name='w-bg-transparent w-text-14 w-p-0 w-text-secondary hover:w-text-secondary-600 w-inline-flex w-justify-center w-transition' dialog_id="schedule-publishing-dialog" text=set_schedule_text %}
{% endif %}
</div>
{% endif %}
{% endwith %}
{% endblock %}

Wyświetl plik

@ -1281,7 +1281,7 @@ class TestPageEdit(TestCase, WagtailTestUtils):
)
def test_page_edit_num_queries(self):
with self.assertNumQueries(45):
with self.assertNumQueries(47):
self.client.get(
reverse("wagtailadmin_pages:edit", args=(self.event_page.id,))
)

Wyświetl plik

@ -31,8 +31,17 @@ class BaseStatusSidePanel(BaseSidePanel):
toggle_aria_label = gettext_lazy("Toggle status")
toggle_icon_name = "info-circle"
def __init__(self, *args, in_explorer=False, **kwargs):
def __init__(
self,
*args,
live_object=None,
scheduled_revision=None,
in_explorer=False,
**kwargs,
):
super().__init__(*args, **kwargs)
self.live_object = live_object
self.scheduled_revision = scheduled_revision
self.in_explorer = in_explorer
def get_status_templates(self, context):
@ -72,6 +81,9 @@ class PageStatusSidePanel(BaseStatusSidePanel):
if page.id:
context.update(
{
"in_explorer": self.in_explorer,
"live_object": self.live_object,
"scheduled_revision": self.scheduled_revision,
"history_url": reverse(
"wagtailadmin_pages:history", args=(page.id,)
),
@ -191,12 +203,26 @@ class BaseSidePanels:
class PageSidePanels(BaseSidePanels):
def __init__(
self, request, page, *, preview_enabled, comments_enabled, in_explorer=False
self,
request,
page,
*,
preview_enabled,
comments_enabled,
live_page=None,
scheduled_revision=None,
in_explorer=False,
):
super().__init__(request, page)
self.side_panels = [
PageStatusSidePanel(page, self.request, in_explorer=in_explorer),
PageStatusSidePanel(
page,
self.request,
live_object=live_page,
scheduled_revision=scheduled_revision,
in_explorer=in_explorer,
),
]
if preview_enabled and page.is_previewable():

Wyświetl plik

@ -316,6 +316,7 @@ class EditView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View):
Page.objects.prefetch_workflow_states(), id=page_id
)
self.latest_revision = self.real_page_record.get_latest_revision()
self.scheduled_revision = self.real_page_record.get_scheduled_revision()
self.page_content_type = self.real_page_record.cached_content_type
self.page_class = self.real_page_record.specific_class
@ -841,7 +842,9 @@ class EditView(TemplateResponseMixin, ContextMixin, HookResponseMixin, View):
)
side_panels = PageSidePanels(
self.request,
self.page_for_status,
self.page,
live_page=self.real_page_record,
scheduled_revision=self.scheduled_revision,
preview_enabled=True,
comments_enabled=self.form.show_comments_toggle,
)

Wyświetl plik

@ -977,7 +977,9 @@ def register_icons(icons):
"bin.svg",
"bold.svg",
"breadcrumb-expand.svg",
"calendar.svg",
"calendar-alt.svg",
"calendar-check.svg",
"chain-broken.svg",
"check.svg",
"chevron-down.svg",

Wyświetl plik

@ -552,6 +552,13 @@ class DraftStateMixin(models.Model):
else:
return self
def get_scheduled_revision(self):
return self.revisions.filter(approved_go_live_at__isnull=False).first()
def get_scheduled_revision_as_object(self):
scheduled_revision = self.get_scheduled_revision()
return scheduled_revision and scheduled_revision.as_object()
def _update_from_revision(self, revision, changed=True):
update_fields = ["latest_revision"]
self.latest_revision = revision