Ошибка PicklingError, вызванная p4a.calendar.interfaces.ICalendarSupport при миграции с 3.3.5 на 4.0.7 - PullRequest
2 голосов
/ 29 сентября 2011

Я пытаюсь перенести установку 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, который был установлен (и удален перед переносом Data.fs в версию 4.0.7). ) только на компоновке 3.3.5.

Я также попытался последовать совету здесь , и у SiteManager для объекта Plone нет адаптера или подписчика со строкой "p4a". Атрибут dict из глобального SiteManager также не сообщает ни о каком появлении строки "p4a".

Может кто-нибудь подсказать мне об этом? Где мне искать «p4a.calendar.interfaces.ICalendarSupport» в Data.fs?

...