2012/05/31

Ploneboard Migration Revisited

之前經驗是 Plone 2.5 昇級到 Plone 3.1,這次是 Plone 4.0.x 到 Plone 4.1.x。總結地說,這段昇級的挑戰主要是因應 Products.TinyMCE 的調整。

測試流程是先在 Plone 4.0.7 (+ TinyMCE 1.1.10) 安裝 Ploneboard 2.2,安裝過程中遇到 Kupu 的 Resource Type 設定內容要把 Large Plone Folder 取消勾選,存檔生效,不然會有 KupuError,在 Products/SimpleAttachment/setuphandlers.py 第 29 行,已經不認得 Large Plone Folder 型別。

KupuError:
 Resource type: linkable, invalid type: Large Plone Folder

另外 Products/Ploneboard/skins/ploneboard_templates/add_conversation_form.cpt 第 36 行要檢查 context 和 python:context 的差別。

如果 Plone 4.0.x 改裝 Ploneboard 3.0 以上,會遇到 Products.CMFPlone >= 4.1 的相依問題。另外,Products.Ploneboard/vocabulary.py 視情況要修改:

-from zope.app.schema.vocabulary import IVocabularyFactory
+from zope.schema.interfaces import IVocabularyFactory

接著,在 Plone 4.1.5 (+ TinyMCE 1.2.11) 安裝 Ploneboard 3.3 (src from github),把 var/filestorage/Data.fs 和 var/blobstorage 複製到新環境,到 ZMI 執行昇級,過程沒遇到問題,但實際的 Ploneboard conversation view 可能會遇到 RuntimeError:

   - URL: file:/home/marr/plone415/buildout-cache/eggs/Products.TinyMCT-1.2.11-py2.6.egg \
     /Products/TinyMCE/skins/tinymce/tinymce_wysiwyg_support.pt
   - Line 6, Column 2
   - Expression: <PathExpr standard:u'object|here'>
  ...
   - Warning: Macro expansion failed
   - Warning: <type 'exceptions.KeyError'>: 'support'
  ...
RuntimeError: maximum recursion depth exceeded while calling a Python object

猜想這只發生在使用 TinyMCE 的場合,根據 https://github.com/plone/Products.TinyMCE/pull/22 的說明,改用 nocall 方式,可以解決這問題。

No comments: