Plone 2.0.5 の ATContentTypes 化
まずは移行にむけて、Plone 2.0.5 上の既存のコンテンツを ATContentTypes に変更します。
Plone 2.1 ではコンテンツは今までのものから Archetypes ベースの ATContentTypes(ATCT) というものに変わります。
参考: #28: AT Content Types as default types
というわけで、あとでデータを移行しやすくするために zope 2.7 + plone 2.0.5 の環境で、コンテンツを ATContentTypes に変更します。
目次
- ATContentTypes のインストール[install]
- コンテンツの移行[migration]
ATContentTypes のインストール[install]
まずはじめに ATContentTypes をダウンロードしてインストールします。
ATContentTyeps は The Plone Collective から 0.2.0-final というバージョンをダウンロードしてインストールします。
インストールの方法はダウンロードして Products ディレクトリに展開するだけです。
# cd /var/lib/zope/Products # tar xfz ATContentTypes-0.2.0-final.tar.gz # chown -R zope:zope ATContentTypes
zope サーバを再起動して ATContentTypes を読み込ませる前に、バグっぽい部分があったので直しておきます。
migration/Migrator.py の 404 行目を書き換えます。変更前は以下のようになっています。:
log('WARNING: BrokenObject in %s' % \
self.old.absolute_url(1))
これを以下のように書き換えます。変更点は関数名が log から LOG になったことです。:
LOG('WARNING: BrokenObject in %s' % \
self.old.absolute_url(1))
ソースコードの修正が終わったら、zope サーバを再起動します。 その後、「plone の設定」→「プロダクツを追加・削除」の画面からインストールを行います。
なお、ATContentTypes の動作には Archetypes 1.3.2 以上が必要です。
plone 2.0.5 に付属の Archetypes 1.2 系を使用している場合はインストールしなおす必要があります。
コンテンツの移行[migration]
次に既存のコンテンツを ATContentTypes ベースのものに移行します。
zope 管理画面を開いて plone サイトのルートフォルダを参照します。 すると以下のような External Method が追加されています。
migrateFromCMFtoATCTCMF の既存のコンテンツを ATContentTypes に移行します- 'switchCMF2ATCT'ATContentTypes をデフォルトのコンテンツにします
switchATCT2CMFデフォルトのコンテンツを ATContentTypes から元に戻します
ここでは migrateFromCMFtoATCT を実行して、既存のコンテンツを ATContentTypes に移行します。
migrateFromCMFtoATCT を選択します。そして実行するために Test タブをクリックします。
Test タブをクリックすると、フォルダを再帰的に走査して各コンテンツを ATContentTypes ベースのものに移行します。かなり時間がかかりますが辛抱強く待ちます。
移行作業が終了したあとに、zope 管理画面でフォルダやドキュメントを選択すると、アイテムの種類が ATFolder 等に変わっていることが確認できます。
私の場合はなぜか Members フォルダが原因で移行に失敗しました。
ただ、Members フォルダには何もアイテムが入っていない(移行対象じゃない)ので、フォルダを削除してから migrateFromCMFtoATCT を実行して対応しました。
以上でコンテンツの ATContentTypes への移行作業は終了です。 次はそのコンテンツを zope 2.8 + plone 2.1 環境へ Import/Export してコピーします。