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

acl*_*ark 2 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'>
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

Han*_*ing 5

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

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

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