我该如何解决:会员(CMFPlone产品中的这个对象坏了!)?

时间:2011-06-23 17:58:39

标签: plone

我有一个Plone 2.5网站,升级到Plone 4.1rc3(或4.0.x)时似乎有一个破坏的会员目录(即使我先升级到3.3.x)。

在升级过程中,我明白了:

2011-06-23 13:44:39 ERROR plone.app.upgrade Upgrade aborted. Error:
Traceback (most recent call last):
  File "/Users/aclark/Downloads/eggs-directory/Products.CMFPlone-4.1rc3-py2.6.egg/Products/CMFPlone/MigrationTool.py", line 175, in upgrade
    step['step'].doStep(setup)
  File "/Users/aclark/Downloads/eggs-directory/Products.GenericSetup-1.6.3-py2.6.egg/Products/GenericSetup/upgrade.py", line 142, in doStep
    self.handler(tool)
  File "/Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py", line 478, in updateLargeFolderType
    update(brain)
  File "/Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py", line 472, in update
    obj._setPortalTypeName('Folder')
AttributeError: _setPortalTypeName
> /Users/aclark/Downloads/eggs-directory/plone.app.upgrade-1.1rc3-py2.6.egg/plone/app/upgrade/v40/alphas.py(472)update()
    471         obj = brain.getObject()
--> 472         obj._setPortalTypeName('Folder')
    473         reindex(obj, idxs=['portal_type', 'Type', 'object_provides'])

ipdb> obj
<persistent broken Products.CMFPlone.LargePloneFolder.LargePloneFolder instance '\x00\x00\x00\x00\x00\x00\x07W'>

为什么会这样?这不应该由LargePloneFolder弃用代码处理吗?我以前从未见过这个。我知道在某些时候有一个代码重组,关于Products.CMPlone和Plone包(这样一个或另一个现在是垫片),我想知道这是否会导致问题。

在ZMI中,members文件夹如下所示:

enter image description here

我可以做些什么来尝试调查/解决此问题?

1 个答案:

答案 0 :(得分:5)

您的会员文件夹来自Archetypes之前的日子。如果我没记错,早期Plone 2.1.x版本中的ATContentTypes迁移确实错过了大文件夹。

在Plone 2.5中创建一个新的“大Plone文件夹”,确保它的类型正确(Products.ATContentTypes.content.folder.ATBTreeFolder),将Members文件夹的内容移入其中,删除旧的Members文件夹和将新的大文件夹重命名为Members。

也许ATContentTypes迁移代码仍然存在,但我根本不记得如何调用它。您也可以根据Products.contentmigration编写自己的迁移代码,并在Plone 3.x站点中运行它。