从3.3.5迁移到4.0.7时由p4a.calendar.interfaces.ICalendarSupport引起的PicklingError

时间:2011-09-28 21:36:56

标签: upgrade plone pickle zope3

我正在尝试将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接口,我得到了“只能删除直接提供的接口。”消息)。为了消除这种情况,我们卸载了产品(遵循here的好建议)

现在,在将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,它已安装(并在将Data.fs移动到4.0.7安装之前卸载)仅在3.3.5扩建时。

我还尝试遵循here的建议,而Plone对象的SiteManager没有任何带有“p4a”字符串的适配器或订阅者。全局SiteManager中的 dict 属性也不会报告任何“p4a”字符串的出现。

任何人都可以对此有所了解吗?我应该在哪里寻找Data.fs中的“p4a.calendar.interfaces.ICalendarSupport”?

0 个答案:

没有答案