Move legacy page moderation views to wagtail.admin.views.pages.moderation

pull/6302/head
Matt Westcott 2020-08-05 16:32:13 +01:00 zatwierdzone przez Matt Westcott
rodzic b2a943d9f6
commit 30405f45e9
2 zmienionych plików z 56 dodań i 48 usunięć

Wyświetl plik

@ -21,7 +21,6 @@ from wagtail.admin import messages
from wagtail.admin.action_menu import PageActionMenu from wagtail.admin.action_menu import PageActionMenu
from wagtail.admin.auth import user_has_any_page_permission, user_passes_test from wagtail.admin.auth import user_has_any_page_permission, user_passes_test
from wagtail.admin.filters import PageHistoryReportFilterSet from wagtail.admin.filters import PageHistoryReportFilterSet
from wagtail.admin.mail import send_notification
from wagtail.admin.modal_workflow import render_modal_workflow from wagtail.admin.modal_workflow import render_modal_workflow
from wagtail.admin.views.pages.utils import get_valid_next_url_from_request from wagtail.admin.views.pages.utils import get_valid_next_url_from_request
from wagtail.admin.views.reports import ReportView from wagtail.admin.views.reports import ReportView
@ -34,6 +33,7 @@ from wagtail.admin.views.pages.create import * # noqa
from wagtail.admin.views.pages.edit import * # noqa from wagtail.admin.views.pages.edit import * # noqa
from wagtail.admin.views.pages.listing import * # noqa from wagtail.admin.views.pages.listing import * # noqa
from wagtail.admin.views.pages.lock import * # noqa from wagtail.admin.views.pages.lock import * # noqa
from wagtail.admin.views.pages.moderation import * # noqa
from wagtail.admin.views.pages.move import * # noqa from wagtail.admin.views.pages.move import * # noqa
from wagtail.admin.views.pages.preview import * # noqa from wagtail.admin.views.pages.preview import * # noqa
from wagtail.admin.views.pages.search import * # noqa from wagtail.admin.views.pages.search import * # noqa
@ -183,53 +183,6 @@ def set_page_position(request, page_to_move_id):
return HttpResponse('') return HttpResponse('')
def approve_moderation(request, revision_id):
revision = get_object_or_404(PageRevision, id=revision_id)
if not revision.page.permissions_for_user(request.user).can_publish():
raise PermissionDenied
if not revision.submitted_for_moderation:
messages.error(request, _("The page '{0}' is not currently awaiting moderation.").format(revision.page.get_admin_display_title()))
return redirect('wagtailadmin_home')
if request.method == 'POST':
revision.approve_moderation(user=request.user)
message = _("Page '{0}' published.").format(revision.page.get_admin_display_title())
buttons = []
if revision.page.url is not None:
buttons.append(messages.button(revision.page.url, _('View live'), new_window=True))
buttons.append(messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit')))
messages.success(request, message, buttons=buttons)
if not send_notification(revision.id, 'approved', request.user.pk):
messages.error(request, _("Failed to send approval notifications"))
return redirect('wagtailadmin_home')
def reject_moderation(request, revision_id):
revision = get_object_or_404(PageRevision, id=revision_id)
if not revision.page.permissions_for_user(request.user).can_publish():
raise PermissionDenied
if not revision.submitted_for_moderation:
messages.error(request, _("The page '{0}' is not currently awaiting moderation.").format(revision.page.get_admin_display_title()))
return redirect('wagtailadmin_home')
if request.method == 'POST':
revision.reject_moderation(user=request.user)
messages.success(request, _("Page '{0}' rejected for publication.").format(revision.page.get_admin_display_title()), buttons=[
messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit'))
])
if not send_notification(revision.id, 'rejected', request.user.pk):
messages.error(request, _("Failed to send rejection notifications"))
return redirect('wagtailadmin_home')
class BaseWorkflowFormView(View): class BaseWorkflowFormView(View):
""" """
Shared functionality for views that need to render the modal form to collect extra details Shared functionality for views that need to render the modal form to collect extra details

Wyświetl plik

@ -0,0 +1,55 @@
from django.core.exceptions import PermissionDenied
from django.shortcuts import get_object_or_404, redirect
from django.urls import reverse
from django.utils.translation import gettext as _
from wagtail.admin import messages
from wagtail.admin.mail import send_notification
from wagtail.core.models import PageRevision
def approve_moderation(request, revision_id):
revision = get_object_or_404(PageRevision, id=revision_id)
if not revision.page.permissions_for_user(request.user).can_publish():
raise PermissionDenied
if not revision.submitted_for_moderation:
messages.error(request, _("The page '{0}' is not currently awaiting moderation.").format(revision.page.get_admin_display_title()))
return redirect('wagtailadmin_home')
if request.method == 'POST':
revision.approve_moderation(user=request.user)
message = _("Page '{0}' published.").format(revision.page.get_admin_display_title())
buttons = []
if revision.page.url is not None:
buttons.append(messages.button(revision.page.url, _('View live'), new_window=True))
buttons.append(messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit')))
messages.success(request, message, buttons=buttons)
if not send_notification(revision.id, 'approved', request.user.pk):
messages.error(request, _("Failed to send approval notifications"))
return redirect('wagtailadmin_home')
def reject_moderation(request, revision_id):
revision = get_object_or_404(PageRevision, id=revision_id)
if not revision.page.permissions_for_user(request.user).can_publish():
raise PermissionDenied
if not revision.submitted_for_moderation:
messages.error(request, _("The page '{0}' is not currently awaiting moderation.").format(revision.page.get_admin_display_title()))
return redirect('wagtailadmin_home')
if request.method == 'POST':
revision.reject_moderation(user=request.user)
messages.success(request, _("Page '{0}' rejected for publication.").format(revision.page.get_admin_display_title()), buttons=[
messages.button(reverse('wagtailadmin_pages:edit', args=(revision.page.id,)), _('Edit'))
])
if not send_notification(revision.id, 'rejected', request.user.pk):
messages.error(request, _("Failed to send rejection notifications"))
return redirect('wagtailadmin_home')