我正在尝试将 Plone 3.3.5 安装迁移到 4.0.7。
在迁移之前,决定应该删除 Plone4Artists 日历。
我们遵循此处建议的程序http://plone.org/documentation/kb/cleaning-p4a,将其应用于以下接口:
from p4a.calendar.interfaces import ICalendarEnhanced
from p4a.calendar.interfaces import IPossibleCalendar
from p4a.calendar.interfaces import ICalendarConfig
from p4a.calendar.interfaces import IEventProvider
from p4a.calendar.interfaces import IEvent
from p4a.calendar.interfaces import IBasicCalendarSupport
from p4a.calendar.interfaces import ICalendarSupport
显然,它可以工作(除了 IPossibleCalendar 接口,我得到一个“只能删除直接提供的接口。”消息)。为了删除它,我们卸载了产品(遵循这里的好建议)
现在,在将 Data.fs 从 3.3.5 移动到 4.0.7 安装并尝试在 /Plone/@@plone-upgrade 激活迁移后,我得到以下回溯:
Traceback (most recent call last):
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\plone-4.0.7-py2.6.egg\Products\CMFPlone\MigrationTool.py", line 175, in upgrade
step['step'].doStep(setup)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\products.genericsetup-1.6.3-py2.6.egg\Products\GenericSetup\upgrade.py", line 142, in doStep
self.handler(tool)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\plone.app.upgrade-1.0.7-py2.6.egg\plone\app\upgrade\v40\alphas.py", line 443, in migrateFolders
transaction.savepoint(optimistic=True)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\transaction-1.0.1-py2.6.egg\transaction\_manager.py", line 99, in savepoint
return self.get().savepoint(optimistic)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\transaction-1.0.1-py2.6.egg\transaction\_transaction.py", line 253, in savepoint
self._saveAndRaiseCommitishError() # reraises!
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\transaction-1.0.1-py2.6.egg\transaction\_transaction.py", line 250, in savepoint
savepoint = Savepoint(self, optimistic, *self._resources)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\transaction-1.0.1-py2.6.egg\transaction\_transaction.py", line 647, in __init__
savepoint = savepoint()
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\zodb3-3.9.5-py2.6-win32.egg\ZODB\Connection.py", line 1128, in savepoint
self._commit(None)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\zodb3-3.9.5-py2.6-win32.egg\ZODB\Connection.py", line 606, in _commit
self._store_objects(ObjectWriter(obj), transaction)
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\zodb3-3.9.5-py2.6-win32.egg\ZODB\Connection.py", line 640, in _store_objects
p = writer.serialize(obj) # This calls __getstate__ of obj
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\zodb3-3.9.5-py2.6-win32.egg\ZODB\serialize.py", line 422, in serialize
return self._dump(meta, obj.__getstate__())
File "d:\plone-4.0.7-teste-20110927\buildout-cache\eggs\zodb3-3.9.5-py2.6-win32.egg\ZODB\serialize.py", line 431, in _dump
self._p.dump(state)
PicklingError: Can't pickle <class 'p4a.calendar.interfaces.ICalendarSupport'>: import of module p4a.calendar.interfaces failed
请注意,这是一个测试运行:它是一个虚假且干净的 Data.fs,唯一涉及的产品是 P4A.Calendar,它仅在3.3.5 扩建。
我还尝试遵循此处的建议,并且 Plone 对象的 SiteManager 没有任何带有“p4a”字符串的适配器或订阅者。来自全局 SiteManager的dict属性也不报告任何出现的“p4a”字符串。
谁能告诉我这个?我应该在哪里寻找 Data.fs 中的“p4a.calendar.interfaces.ICalendarSupport”?