kopia lustrzana https://github.com/wagtail/wagtail
Add get_scheduled_revision() method to DraftStateMixin
rodzic
41c8512789
commit
3702132b95
|
@ -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 |
|
@ -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 |
|
@ -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 %}
|
||||
|
|
|
@ -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,))
|
||||
)
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue