pyramid_formalchemyでpyramidにもadminアプリを!

まあ、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を使うかは、今のところ用途に応じて。ということになる。

2 responses
インストールできなくてハマったと思いましたら ../bin/pip install pyramid_formalchemy pyraid_fanstatic fa.jquery pyramid_fanstaticではなく pyraid_fanstaticになっています。
pcreate -t pyramid_fa padmin これでできあがるのは padmin/padmin/fainit.py padmin/padmin/faform.py padmin/padmin/faroute.py だ。 これはできませんでした。 Unavailable scaffolds: ['pyramid_fa']になりますね。