def remove_workflow(request, page_pk, workflow_pk=None): # Remove a workflow from a page (specifically a single workflow if workflow_pk is set) # Get the page page = get_object_or_404(Page, id=page_pk) # Check permissions if not workflow_permission_policy.user_has_permission( request.user, 'change'): raise PermissionDenied if hasattr(page, 'workflowpage'): # If workflow_pk is set, this will only remove the workflow if it its pk matches - this prevents accidental # removal of the wrong workflow via a workflow edit page if the page listing is out of date if not workflow_pk or workflow_pk == page.workflowpage.workflow.pk: page.workflowpage.delete() messages.success( request, _("Workflow removed from Page '{0}'.").format( page.get_admin_display_title())) # Redirect redirect_to = request.POST.get('next', None) if redirect_to and is_safe_url(url=redirect_to, allowed_hosts={request.get_host()}): return redirect(redirect_to) else: return redirect('wagtailadmin_explore', page.id)
def enable_workflow(request, pk): # Reactivate an inactive workflow workflow = get_object_or_404(Workflow, id=pk) # Check permissions if not workflow_permission_policy.user_has_permission(request.user, 'create'): raise PermissionDenied # Set workflow to active if inactive if not workflow.active: workflow.active = True workflow.save() messages.success(request, _("Workflow '{0}' enabled.").format(workflow.name)) # Redirect redirect_to = request.POST.get('next', None) if redirect_to and is_safe_url(url=redirect_to, allowed_hosts={request.get_host()}): return redirect(redirect_to) else: return redirect('wagtailadmin_workflows:edit', workflow.id)