Skip to content

Instantly share code, notes, and snippets.

@kwatch
Created August 21, 2013 09:11
Show Gist options
  • Save kwatch/6292134 to your computer and use it in GitHub Desktop.
Save kwatch/6292134 to your computer and use it in GitHub Desktop.
New feature in Pyramid 1.4: '_depth' argument for view_config(). See https://gist.github.com/kwatch/4204380 for Pyramid 1.3.
# coding: utf-8
###
### New feature in Pyramid 1.4: '_depth' argument for view_config()
###
### New argument '_depth' of view_config() in Pyramid 1.4 allows you
### to define custome decorator for view methods.
###
### '_depth' という新しい引数が Pyramid 1.4 から view_cnfig() に加わった。
### これを使うと、ビューメソッド用の独自デコレータが定義できる。
###
import sys
from pyramid.view import view_config
def view(request_method, route_name, renderer='json', **kwargs):
vconfig = view_config(request_method=request_method,
route_name=route_name,
renderer=renderer,
_depth=1, ## <== New since Pyramid 1.4!
**kwargs)
def deco(func):
def fn(self):
## Example: call setUp() and tearDown() around view method.
## 例: ビューメソッドの前後で setUp() と tearDown() を呼び出す
try:
self.setUp()
return func(self)
finally:
self.tearDown()
fn.__name__ = func.__name__
fn.__doc__ = func.__doc__
return vconfig(fn)
return deco
class View(object):
TD = 'myapp1:templates/'
def __init__(self, request):
self.request = request
def setUp(self): # called before view method.
sys.stderr.write('** setUp() called.\n')
def tearDown(self): # called after view method
sys.stderr.write('** tearDown() called.\n')
#@view_config(route_name='home', renderer=TD+'hello.mako')
@view('GET', 'home', TD+'hello.mako')
def hello(self):
sys.stderr.write('** hello() called.\n')
return {'name': 'world'}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment