2011-06-23 15 views
2

我有一个Plone 2.5站点,当升级到Plone 4.1rc3(或4.0.x)时,似乎有一个损坏的成员目录(即使我先升级到3.3.x)。如何解决:成员(来自CMFPlone产品的这个对象已损坏!)?

在升级的过程中,我得到这个:

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,成员文件夹看起来是这样的:

enter image description here

我能做些什么,试图探讨/解决这个问题?

回答

5

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

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

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

+0

非常感谢Hanno。 – aclark