2011-06-23 17 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