【问题标题】:Plone Archetypes redirection after creation创建后的克隆原型重定向
【发布时间】:2015-06-04 12:17:20
【问题描述】:

我在网上搜索了一段时间,但没有找到任何有用的东西......

我想做一些简单的事情,例如在保存/创建 AT 内容类型后将页面重定向到列表页面(文件夹)。

我已经知道我必须使用 validate_integrity.cpy 并在那里编写我的重定向逻辑,但该文件没有运行...

到目前为止,这是我的 validate_integrity.cpy 的一个示例:

## Script (Python) "validate_integrity"
##title=Validate Integrity
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind state=state
##bind subpath=traverse_subpath
##parameters=
##

from Products.Archetypes import PloneMessageFactory as _
from Products.Archetypes.utils import addStatusMessage

request = context.REQUEST
errors = {}
errors = context.validate(REQUEST=request, errors=errors, data=1, metadata=0)
import pdb; pdb.set_trace()
if errors:
    message = _(u'Please correct the indicated errors.')
    addStatusMessage(request, message, type='error')
    return state.set(status='failure', errors=errors)
else:
    message = _(u'Changes saved.')
    stat = 'created'

    # Redirection after saving edition forms
    redirects = {'Multifile': context.aq_parent.absolute_url_path() + '/multifile'}
    import pdb; pdb.set_trace()
    if context.portal_type in redirects:
        redirect = 'redirect_to:string:${portal_url}' + redirects[context.portal_type]
        state.setNextAction(redirect)
    else:
        stat = 'success'

    addStatusMessage(request, message)
    return state.set(status=stat)

分辨率

我只需要编写以下升级步骤:

from Acquisition import aq_inner, aq_parent
from Products.CMFCore.utils import getToolByName

def upgrade(tool):
    portal = aq_parent(aq_inner(tool))
    setup = portal.portal_setup
    setup.runImportStepFromProfile('profile-my.addon:default', 'skins')

Useful info about upgrade steps here

【问题讨论】:

    标签: python redirect plone archetypes


    【解决方案1】:

    您的 *.metadata 文件可能已丢失,或者有一个操作会路由到与您预期不同的位置:http://docs.plone.org/old-reference-manuals/forms/using_cmfformcontroller.html

    content_edit 的默认元数据位于 Products/Archetypes/skins/archetypes/content_edit.cpy.metadata 中:

    ...
    [actions]
    action.success = traverse_to:string:validate_integrity
    action.success_add_reference = redirect_to:python:object.REQUEST['last_referer']
    action.failure = traverse_to_action:string:edit
    action.next_schemata = traverse_to_action:string:edit
    

    你的动作按钮值“成功”了吗?

    【讨论】:

    • 这个文档非常有用,但我只需要一个升级步骤,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多