diff --git a/openerp/http.py b/openerp/http.py index 1d35c989143..64023602d9d 100644 --- a/openerp/http.py +++ b/openerp/http.py @@ -396,14 +396,18 @@ def route(route=None, **kw): response = f(*args, **kw) if isinstance(response, Response) or f.routing_type == 'json': return response - elif isinstance(response, werkzeug.wrappers.BaseResponse): + + if isinstance(response, basestring): + return Response(response) + + if isinstance(response, werkzeug.exceptions.HTTPException): + response = response.get_response() + if isinstance(response, werkzeug.wrappers.BaseResponse): response = Response.force_type(response) response.set_default() return response - elif isinstance(response, basestring): - return Response(response) - else: - _logger.warn(" returns an invalid response type for an http request" % (f.__module__, f.__name__)) + + _logger.warn(" returns an invalid response type for an http request" % (f.__module__, f.__name__)) return response response_wrap.routing = routing response_wrap.original_func = f