自动重命名新的原型对象(Plone 4)停止工作



我有一个 Plone 4 站点,它停止重命名新的原型对象;创建后(如/temp/portaltype.2015-04-23.1234567890)并保存第一个更改,包括给它一个标题,它应该重命名为更好的(/temp/an-object-with-a-meaningful-name),但这不再发生。

当我应用一些更改将 Plone 从 4.3.3 更新到 4.3.4(一次一步)时,也许出现了问题; 但我继承了一个很长的versions.cfg,它仅按包名称排序,不包含任何提示为什么选择某些版本......

我可以回到两个月前,有一个可以重命名的版本,但是如果没有更多关于要查找的内容的知识,这将是一个非常耗时的过程,重新应用每一个更改,重建,启动和测试;但是我的模式定义没有任何变化。 我有一个temp浏览器,它涉及提供主要编辑表单。但保存操作似乎并非如此。

可悲的是,我还不完全了解base_edit操作的机制,据我所知,它应该调用Archetypes.BaseObject.processForm并隐含._renameAfterCreation,所以我将不胜感激一些如何调试它的指示。 谢谢!

更新:我的产品configure.zcml中有一些触发器,例如:

<subscriber
for=".content.portaltype.PortalType
Products.Archetypes.interfaces.IObjectInitializedEvent"
handler=".events.onInitPortalType"/>

...,在events.py

def onInitPortalType(self, event):
"""
Called after first edit of new objects?
"""
print '/// onInitPortalType(%(self)r, %(event)r)' % locals()
setInitialOwner(self, event)
setStateToPrivate(self, event)

但是,该事件似乎没有被触发,因为我无法在instance fg会话中找到输出。

更新2:我注意到zope.event已被固定到一个相当旧的版本(3.5.2),所以我现在正在尝试更认真地更新到4.3.4(按照本指南)。这让我zope.eventv4.0.3,但现在我有一个版本冲突:

There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
Installing.
Getting section test.
Initializing section test.
Installing recipe zc.recipe.testrunner.

似乎在某处需要zc.recipe.egg < 2dev,但我找不到它。

在原型上的 Plone 4.3.3 和 4.3.4 之间没有重大变化。Products.Archetypes从1.9.7更改为1.9.8,Products.ATContentTypes保留在同一版本上。

指针可以是:

  • 有一个_at_rename_after_creation标志,默认情况下True。这可以在内容类型class上更改。
  • 您的类型是否仍在portal_factory工具中激活?(Afaik 这应该对创建后的重命名没有影响 - 但谁知道呢:-))
  • Products.Archetypes.interfaces.IObjectInitializedEvent订阅者吗?
  • 我曾经遇到的问题是,tmp idportaltype.2015-04-23.1234567890格式错误,AT 没有将其识别为 tmp id,因此它在创建后没有重命名它。AT用来检查id是否自动生成的方法 -> https://github.com/plone/Products.CMFPlone/blob/4.3.4/Products/CMFPlone/utils.py#L111 AFAIK问题是,meta_type和portal_type不再相同。

相关内容

  • 没有找到相关文章

最新更新