[FIX] convert endpoint responses only if it's the current request endpoint
bzr revid: fme@openerp.com-20140219135128-6rdnymufpfo1xyvf
This commit is contained in:
parent
3315938178
commit
226b154154
|
@ -129,6 +129,7 @@ class WebRequest(object):
|
||||||
self.session_id = httprequest.session.sid
|
self.session_id = httprequest.session.sid
|
||||||
self.disable_db = False
|
self.disable_db = False
|
||||||
self.uid = None
|
self.uid = None
|
||||||
|
self.endpoint = None
|
||||||
self.func = None
|
self.func = None
|
||||||
self.func_arguments = {}
|
self.func_arguments = {}
|
||||||
self.auth_method = None
|
self.auth_method = None
|
||||||
|
@ -199,6 +200,8 @@ class WebRequest(object):
|
||||||
arguments = dict((k, v) for k, v in arguments.iteritems()
|
arguments = dict((k, v) for k, v in arguments.iteritems()
|
||||||
if not k.startswith("_ignored_"))
|
if not k.startswith("_ignored_"))
|
||||||
|
|
||||||
|
self.endpoint = func
|
||||||
|
# TODO: get rid of func_*
|
||||||
self.func = func
|
self.func = func
|
||||||
self.func_request_type = func.routing['type']
|
self.func_request_type = func.routing['type']
|
||||||
self.func_arguments = arguments
|
self.func_arguments = arguments
|
||||||
|
@ -271,20 +274,22 @@ def route(route=None, **kw):
|
||||||
@functools.wraps(f)
|
@functools.wraps(f)
|
||||||
def response_wrap(*args, **kw):
|
def response_wrap(*args, **kw):
|
||||||
response = f(*args, **kw)
|
response = f(*args, **kw)
|
||||||
if isinstance(response, Response) or request.func_request_type == 'json':
|
if request.endpoint.original == f:
|
||||||
return response
|
if isinstance(response, Response) or request.func_request_type == 'json':
|
||||||
elif isinstance(response, LazyResponse):
|
return response
|
||||||
raise "TODO: remove LazyResponses ???"
|
elif isinstance(response, LazyResponse):
|
||||||
elif isinstance(response, werkzeug.wrappers.BaseResponse):
|
raise "TODO: remove LazyResponses ???"
|
||||||
response = Response.force_type(response)
|
elif isinstance(response, werkzeug.wrappers.BaseResponse):
|
||||||
response.set_default()
|
response = Response.force_type(response)
|
||||||
return response
|
response.set_default()
|
||||||
elif isinstance(response, basestring):
|
return response
|
||||||
return Response(response)
|
elif isinstance(response, basestring):
|
||||||
else:
|
return Response(response)
|
||||||
raise "TODO: shall we autorise this ?"
|
else:
|
||||||
return response
|
raise "TODO: shall we autorise this ?"
|
||||||
|
return response
|
||||||
response_wrap.routing = routing
|
response_wrap.routing = routing
|
||||||
|
response_wrap.original_func = f
|
||||||
return response_wrap
|
return response_wrap
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
|
@ -561,6 +566,7 @@ class Controller(object):
|
||||||
class EndPoint(object):
|
class EndPoint(object):
|
||||||
def __init__(self, method, routing):
|
def __init__(self, method, routing):
|
||||||
self.method = method
|
self.method = method
|
||||||
|
self.original = getattr(method, 'original_func', method)
|
||||||
self.routing = routing
|
self.routing = routing
|
||||||
def __call__(self, *args, **kw):
|
def __call__(self, *args, **kw):
|
||||||
return self.method(*args, **kw)
|
return self.method(*args, **kw)
|
||||||
|
|
Loading…
Reference in New Issue