1

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

当我应用一些更改将 Plone 从 4.3.3 更新到 4.3.4 (一次迈出一步)时,可能会出现问题;但我继承了一个 long 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某个地方有要求,但我找不到。

4

1 回答 1

2

原型上的 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 不再一样了。
于 2015-04-23T10:25:00.227 回答