« 03.11 Pylons with AuthKit eq TypeError | ココ | 03.17 Python2.5 on さくら は too slow »
2009年3月12日
Pylons with AuthKit ne TypeError
というわけで~。(ざこば師匠風に)
Python2.4では残念なことにExceptionクラスから派生させた新型クラスの例外がTypeErrorになってしまうのでどうしよう、ということで強制的に401エラー(Not authenticated)を返すdecoratorをつくってみることに。
from decorator import decorator
def httpExceptionCatcher(*args):
def wrapper(func, *args, **kwargs):
try:
return func(*args, **kwargs)
except TypeError, e:
abort(401)return decorator(wrapper)
これだけ。
これを、
@httpExceptionCatcher()
@authorize(UserIn())
def actionName(self):
...
とすればTypeErrorを回避できる。ただし常に401エラーになるけど。ここでdecoratorのすごいのは、前回にA(B(func()))となるA, Bがdecoratorと書いたものの、絶対にfunc()が呼ばれるわけではないところ。decoratorの中でfunc()以外の別の処理に切り替えることができる。素晴らしい。
By ただ at 22:21 カテゴリー ; PinMarch Samples , プログラミングとか
« 03.11 Pylons with AuthKit eq TypeError |
03月の記事
| 03.17 Python2.5 on さくら は too slow »
トラックバック
このエントリーのトラックバックURL:
http://pinmarch.sakura.ne.jp/mt/mt-tb.cgi/1383