问题描述
|
我有一个Plone 2.5站点,该站点在升级到Plone 4.1rc3(或4.0.x)时似乎具有损坏的Member dir(即使我先升级到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文件夹如下所示:
我该怎么做才能尝试调查/解决此问题?
解决方法
您的成员文件夹来自原型之前的日子。如果我没有记错的话,早期Plone 2.1.x发行版中的ATContentTypes迁移确实会错过大型文件夹。
在Plone 2.5中,创建一个新的\“ Large Plone Folder \”,确保其类型正确(Products.ATContentTypes.content.folder.ATBTreeFolder),将Members文件夹的内容移到其中,删除旧的Members文件夹并重命名给会员的新大文件夹。
也许ATContentTypes迁移代码仍然存在,但是我完全不记得如何调用它了。您还可以基于Products.contentmigration编写自己的迁移代码,然后在Plone 3.x站点中运行该代码。