まあ、django中毒なみなさまにはadminがないフレームワークなんて信じられないだろう。
悪いけど、admin作れるのはdjangoのO/Rマッパーがアホなせいも多分に影響してるんだよね。
とはいえ、djangoのadminに慣らされた身としてはadminないとか耐え難いことかもしれない。
ということで、pyramidですぐに使える(でも、完璧じゃない)adminツールを紹介することにするよ。
まあ、pyramidのプロジェクト作るぐらいのことは、日ごろ「pyramidはflaskと違いはない」なんて言う人たちには朝飯前だよね。
そうじゃない人たちのために、復習しておこう。
virtualenv --distribute padmin
virtualenv使うのは、もはや常識の範疇。最新のvirtualenv1.7はno-site-packagesがデフォルトだ。
アップデートしてない君は以下のようにする必要があるだろう。
virtualenv --no-site-packages --distribute padmin
そしたらpadmin以下で、pyramidをインストールしよう。
cd padmin
bin/pip install pyramid
windowsユーザーの皆様へ。
僕はこのエントリをwindowsで書いている。macの中途半端なunix環境は許しがたい。
この bin/pip のコマンドを含めて、windowsのvirtualenv環境はscripts以下にコマンドがあるってことを前提にして欲しい。
bin/pip って書いてある場合は、windowsだと、 scripts/pip って書いてあると脳内変換して読み進んでいただきたい。
ではプロジェクトを作ろう。
pcreate -t alchemy padmin
これでとりあえずsqlalchemyを使うpyramidアプリケーションの雛形ができる。
pyramidに習熟した人たちだったら、ここからnoseやwebtestなどをインストールするだろうが、まあ、それはおいおい追加していただくとして。
ここからが、ちょっと違うところだ。
さらにpyramid_formalchemyをインストールするんだ。
../bin/pip install pyramid_formalchemy pyraid_fanstatic fa.jquery
なんか説明してないものもインストールしてるね。
fanstaticというのはjavascriptを管理するためのライブラリだ。
最近のWebアプリケーションはjavascriptなしでは成り立たないと言ってもいい。
formalchemyはfa.jqueryという追加のモジュールがあって、これを追加すると、javascriptを使ったリッチなUIが使えるんだ。
fanstaticはそのjavascriptを管理するためにfanstaticを使っている。
pyramid_fanstaticは、fastaticをpyramidにより親和性のあるように統合できるアドオンだ。
これらがインストールできたら、formlalchemyを使うためのpcreateを実行する。
pcreate -t pyramid_fa padmin
これでできあがるのは
padmin/padmin/fainit.py
padmin/padmin/faform.py
padmin/padmin/faroute.py
だ。
padmin/__init__.pyのなかで
config.include('.fainit')
とすれば、もうformalchemyを使ったadminは設定完了だ。
とはいえ、1つ修正する点がある。
pyramid_formalchemyのadminで管理できるのはコンストラクタがなにも引数をとらないmodelだけだ。
そして、alchemyスキャッフォールドを展開した直後のmodelsには、引数を受け取るコンストラクタが定義されている。
ここは修正が必要だ。
そもそもsqlalchemy.ext.delcarativeから定義したモデルはコンストラクタが自動生成される。
ここは __init__ メソッドを潔く削除しよう。
実行前にデータベースを作成しておく。
pyramidのalchemyスキャッフォールドはデータベース作成と初期データ生成のコマンドまで実装してくれている。
このプロジェクトをpip install -e としてあげれば、このコマンドを使えるようになる。
pip install -e padmin
として、プロジェクトをvirtualenvに登録しよう。
登録できたら、popurate_padmin というようなコマンドを実行してあげればいい。
virtualenviに入ってるコマンドということを、お忘れなく。
bin/popuate_padmin padmin/development.ini
これでデータベースもできた。
あとは実行するだけだ。
bin/pserve padmin/development.ini
http://localhost:6543/admin にアクセスすれば、adminアプリケーションを使うことができるはずだ。
だが、カスタマイズなどを考えると、まだ実用に遠く及ばない。
formalchemyを使うか、deform+coalnderを使うかは、今のところ用途に応じて。ということになる。