COREBlog1からCOREBlog2へ移行する

COREBlog2のアーカイブには、移行のためのスクリプトやREADMEなどが同梱されています(「COREBlog2_09b/COREBlog2/mirgration」以下)。とりあえず一通りreadme-ja.txtに目を通しておきましょう。

移行のために使うファイル


エクスポートの下準備

エクスポート時に一番ひっかかるのはカテゴリ名ではないでしょうか。COREBlog1のカテゴリ名はそのままCOREBlog2でもカテゴリのidとして使うわけですが、このidにはルールがありますので、それに違反してしまうと移行に失敗してしまいます。COREBlog1の情報をエクスポートする前にまずはカテゴリ名をチェックしておくのがよいでしょう。

COREBlog2のカテゴリidは、すべて英数字の半角である必要があり、また空白や下線があってはいけませんし、大文字と小文字を混在させることも禁止されています。ですので以下のようなカテゴリ名は不適切です。

  • 「HOGE はげ」…空白があり、しかも日本語が使われている
  • 「Hoge」…大文字と小文字が混在している
  • 「hoge_1」…アンダーバーが使われている(ハイフンならOK)

カテゴリチェックを終えたらエクスポートの作業に移ります。

COREBlog1のエントリ情報をエクスポートする

COREBlog1インスタンスのcontentsタブから「DTML Method」をaddします。

DTMLメソッドを追加


名前は何でもよいですが、ここでは「COREBlog_Export」としておきます。下図のように、参照ボタンからmigrationフォルダ内にある「coreblogexport.dtml.txt」を選びましょう。

参照ボタンからcoreblogexport.dtml.txtを選ぶ


COREBlog_ExportというidでDTMLメソッドを追加したら、「(COREBlogのURL)/COREBlog_Export」にアクセスします。例えばCOREBlogのURLが「http://www.example.com/core/」だったら「http://www.example.com/core/COREBlog_Export」にアクセスするわけです。アクセスするとローカルコンピュータに「COREBlog_Export.txt」というファイルがダウンロードされます。

ちょっと寄り道

当該URLにアクセスすると何故「COREBlog_Export.txt」というファイルがダウンロードされるのでしょうか。これは「coreblogexport.dtml.txt」の冒頭部に秘密があります。このファイルをちょっと見てみると次のような記述があります。

<dtml-comment>
### Set file name ###
</dtml-comment>
<dtml-unless fname>
<dtml-call "REQUEST.set('fname','COREBlog_Export.txt')">
</dtml-unless>

<dtml-comment>
### Set response headers for download ###
</dtml-comment>
<dtml-call "RESPONSE.setHeader('Content-type','application/data')">
<dtml-call "RESPONSE.setHeader('Content-Disposition','inline;filename='+fname)">

5行目のところで、「fname」という変数に「COREBlog_Export.txt」という値を設定しています。また最後の2行の部分ではこのCOREBlog_Exportのコンテンツタイプなどを設定しています。コンテンツタイプにapplication/dataを設定することでブラウザはこのファイルをダウンロードするようになりますし、コンテンツディスポジションを設定することでファイル名を指定しています(実際指定しているのは「fname」ですが、5行目のところで「fname」に「COREBlog_Export.txt」を設定しているため、結果的に「COREBlog_Export.txt」というファイル名を指定していることになります)。

この冒頭部より後にはひたすらにエントリ情報を出力するためのDTMLコードが続きます。

よって「(COREBlogのURL)/COREBlog_Export」にアクセスすると、エントリ情報が記述された「COREBlog_Export.txt」というファイルがダウンロードされることになります。

ダウンロードした後のチェック

ダウンロードしたらCOREBlog_Export.txtのエンコードと改行コードをチェックしておきます。エンコードは「utf-8」、改行コードは「LF(0x0A)」です。utf-8/LFでない場合はエディタなどで変更しておきましょう。例えばWindowsで秀丸エディタならば、「ファイル」メニューから「名前を付けて保存」をすればエンコードも改行コードも指定して保存することができます。

「COREBlog_Export.txt」をCOREBlog2にインポートする

いよいよCOREBlog2にエントリ情報をインポートします。ただし事前にPlone上にCOREBlog2を作成しておく必要があります。COREBlog2を作成したら以下のようにします。

  1. ZMIから「Ploneインスタンス/portal_skins/custom」に行く
  2. 右上のプルダウンメニューから「Script(Python)」をファイル名「port」として追加する。なおこのときに参照ボタンからmigrationフォルダ内にある「port.py」を選んでおくこと。ファイル名に「.py」を付けないように注意する
  3. 同じようにプルダウンメニューから「File」をファイル名「COREBlog_Export」として追加する。参照ボタンから、先ほどローカルコンピュータにダウンロードした「COREBlog_Export.txt」を選んでおくこと
  4. 「(Plone上に作ったCOREBlog2のURL)/port」にアクセスする。例えばCOREBlog2のURLが「http://www.example.com/plone/core2」だとすると、「http://www.example.com/plone/core2/port」にアクセスする

これでインポートができるハズです。

インポートが成功すると

start!
----------------------------------------
category ['1']
...
...
以下続く

のような感じのものがブラウザに表示されます。

失敗した場合には

start!
{}

というような感じになりますので、カテゴリ名や、COREBlog_Export.txtのエンコード・改行コードなどが適切だったかどうかもう一度確認してみましょう。

インポート成功、その後

  • 画像や自分でカスタマイズしたモジュールなどは手動で移行する必要があります。
  • 移行したエントリの作成日を変更できます。たかのりさんの「移行したCOREBlog2のエントリの作成日を変更」というエントリを参考にしてください。
  • COREBlog2のエントリのidは、何も設定していない場合にはタイトルから任意のidが割り振られます。これをCOREBlog1と同じように数値のidを設定できます。同じくたかのりさんの「COREBlog2のエントリのidに数値をセット」というエントリを参考にしてください。
  • このエントリを書いている現時点では、エントリが表示されないという不具合が報告されています。不具合が起きたときの特徴として、パンくずリストの最後に「comments」が付くということがあげられていますので、port.pyのコメントを扱う部分などに問題があるのかもしれません。

追記:エントリが表示されない不具合は解決されています。

トラックバック用URL:
http://nagosui.org:8080/Nagosui/COREBlog2/migrate-to-coreblog2/tbping
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)
Enter the word

このBlogについて
Plone, Zope, Pythonなどのトピックについてのメモです。
カテゴリ
Plone (98)
Plone Products (23)
COREBlog2 (31)
COREBlog1 (29)
ReadingCOREBlog (7)
Zope (66)
Turbogears (18)
Django (12)
Python (25)
Linux (30)
Nagosui (12)
Design (33)
Misc (48)
moblog (5)
最近のエントリ
浜松ブラスバンド定期演奏会2008 nyusuke 2008年11月24日
Glossy Horizontal Menuを使う nyusuke 2008年11月17日
第3回Python東海終了 nyusuke 2008年11月17日
Universalじゃない件 nyusuke 2008年11月15日
最近のコメント
Re:WebデザイナーのためのDjangoはじめの一歩 nyusuke 2007年06月01日
Re:WebデザイナーのためのDjangoはじめの一歩 pateo 2007年05月31日
Re:東海Python Workshop 01終了 nyusuke 2007年05月31日
Re:東海Python Workshop 01終了 kfuruhata 2007年05月30日