1
我正在使用Plone 5.0和plone.app.iterate插件來提供簽出選項和Intranet/Extranet工作流。爲了融合這兩個概念,我的想法是: 事件處理程序檢查每個工作流程轉換後,頁面是否爲工作副本,以及它是否爲已發佈頁面。如果是這樣自動將頁面應該在 工作後複查所以檢查複製它在檢查 爲了做到這一點,我寫了下面的事件處理程序:簽入事件後的HTTP重定向
from Acquisition import aq_inner
from plone import api
from plone.app.iterate.interfaces import IWorkingCopy, ICheckinCheckoutPolicy
from plone.app.iterate import PloneMessageFactory as _
from Products.CMFCore.utils import getToolByName
from Products.statusmessages.interfaces import IStatusMessage
def checkInIfNeeded(document, event):
context = aq_inner(document)
workflowTool = getToolByName(context, "portal_workflow")
status = workflowTool.getStatusOf("intranet_workflow", document)
if IWorkingCopy.providedBy(context) and status["review_state"] == "internally_published":
policy = ICheckinCheckoutPolicy(context)
baseline = policy.checkin("")
IStatusMessage(context.REQUEST).addStatusMessage(
_("Checked in"), type='info')
view_url = baseline.restrictedTraverse("@@plone_context_state").view_url()
context.request.response.redirect(view_url)
的檢查中的代碼幾乎是從source of the interface 這工作正常,直到用戶觸發事件的最後一行應該被重定向到現在檢入頁面的主分支。用戶被重定向到工作副本的一個頁面(現在不再存在),告訴用戶頁面不可用。我做錯了什麼?
它運作良好,'transaction.commit()'是必需的。 – Waynebird