作りました。
まあロジックもそれほどないし、 bottle+peewee と比べてpyramidで書いたらどうなるかってので、1つ書いたのが こちら 。
オリジナルをほぼそのまま使いつつ、モデル定義を SQLAlchemy に変更。viewの関数の引数調整やURLの登録とかやって完成。
その後、調子に乗って、Zope2とPloneでもやってみた。
Zope2版では、five.grokを使ってみた。 grokはZope Toolkitを使ったWebアプリケーションフレームワークで、規約ベースとなっています。 five.grokはこれをZope2上で使えるようにしたもの。 規約ベースなので、規約を知らないと、なぜこれだけで動くのかってのがわかりにくいはず。
app.py には Guestbookクラスが実装されていて、唯一のモデルクラスとなっています。 なので、同じapp.pyにある2つのビュークラスは自動でGuestbookクラス用のビューになる。 さらに app_templates にあるクラスと同名(厳密にはlowerした名前)のテンプレートも自動でビューが利用します。 Postクラス用のテンプレートがないけど、これは render メソッドをオーバーライドしているため。 あとはZope2の管理画面(ZMI)から扱えるように、なんか作法にのっとってファクトリを登録しているのがイマイチですが、これは黙って従うものとしましょう。
Plone版では、dexterityを使ってみました。(実際にdexterityで書いてみたのは初めて) dexterityでは、コンテンツの実装はfive.grokを使うので、コーディング自体はあまり変わらず。 PloneのCMS内にコンテンツの情報を登録するところが主になっています。 Ploneのアドオンで登録するので、アドオンのメタデータと、コンテンツのメタデータなどをXMLで作る。結構な量があるので、自動生成なかったら相当面倒な気がします。(下手するとメタデータのテストも必要)
ちなみに、パーミッションなど、適当です。 ゲストブックなので、Viewパーミッションあれば書き込み可能。
ヽ(´_・ω・)_あとはなにで作ろうねぇ...
Comments !