def resource(self, path, **kwargs):
def decorator(wrapped, depth=1):
route_name = kwargs.pop("route_name", None)
route_name = route_name or wrapped.__name__
route_name = kwargs.pop("name", route_name)
wrapped.route_name = route_name
def callback(scanner, name, cls):
config = scanner.config.with_package(info.module)
config.add_route(route_name, path, factory=cls)
config.add_view(default_options_view, route_name=route_name,
request_method='OPTIONS', permission=NO_PERMISSION_REQUIRED)
config.add_view(unsupported_method_view, route_name=route_name, renderer='json')
for method in METHODS:
setattr(wrapped, method, type('ViewDecorator%s' % method,
(ViewDecorator, object),
{'request_method': method,
'state': wrapped,
'kwargs': kwargs}))
info = venusian.attach(wrapped, callback, 'pyramid', depth=depth)
return wrapped
return decorator
评论列表
文章目录