Created
August 21, 2013 09:11
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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