イベントハンドラは、Ploneの開発でも役に立ちます。

Zope/Plone, grok No Comments

イベントハンドラは、デスクトップアプリなどでは、よく使っています。このイベントハンドラですが、Plone 3 から利用できるようになっていて、とても便利です。ただ、zcmlに書いたりとしてめんどくさいのも事実です。しかし、Five.grokを使うことでこの面倒なことがなくなり、非常に使いやすくなりました。

何が便利かといえば、例えば、あるコンテンツを生成したとき、同時に、作成したオブジェクトの中にコンテンツを作成したい時などです。(Archtypesを使えば、initialized_archtypes()メソッドで実現できますが。)

この場合は、コンテンツを生成してコンテナに登録されたとき、追加されたことを知らせる、IObjectAddedEventが発生するので、このイベントを使って、コンテンツを追加する操作を行います。

下記のコードは、IAobjインターフェイスを持ったAobjがあり、Aobjが追加された時に、idを「b」としてBobjを追加する方法です。サンプルのコンテンツは、Dexterity FTIを使っていることとします。

from five import grok
from zope.app.container.interfaces import IObjectAddedEvent
from plone.dexterity.utils import createObject

・・・中略・・・

@grok.subscribe(IAobj, IObjectAddedEvent)
def addedAobj(aobj, event):
    bobj = createObject('Bobj', title=u'B')
    aobj['b']= bobj

なお、イベントハンドラは、追加のほかに、編集が終了した時に発生するIObjectModifiedEventや、削除されたときに発生するイベントIObjectRemovedEventなどがあります。

IIS + WSGI Part-1

Python, Windows, Zope/Plone, grok No Comments

サーバーがWindows Server 2008になる可能性があるので,IIS からDjangoやZope3を使うための方法を探してみた.

pyisapie
http://apps.sourceforge.net/trac/pyisapie/

isapi-wsgi
http://code.google.com/p/isapi-wsgi/

いろいろあった.

これから,VM上にWindows Server 2008環境を作ってテストしてみる.

続く

Grok : Zope3をベースとしたWeb Framework

Python, Zope/Plone, grok No Comments

Grokをまじめに始めました.GrokはZope3をベースとしたWeb Frameworkです.とっても扱いやすいです.zcmlをほとんど意識しないのが新鮮.

これから,簡易CMSの作成をしていくつもり.

以下,機能など.

  1. 追加・変更・削除ができる
    • フォルダ 
    • ドキュメント 
    • ファイル(画像など)
  2. コンテンツの階層管理
  3. メールフォーム
  4. アクセス制限
  5. ユーザ認証
  6. ワークフローによる公開プロセス
  7. リッチなドキュメントエディタ