[FIX] web: do not wrap `HTTPException`s inside errors 500

[FIX] web: return a httpcode 204 when controller do not return anything

bzr revid: chs@openerp.com-20130524145456-rh17iax17g8cgvma
This commit is contained in:
Christophe Simonis 2013-05-24 16:54:56 +02:00
parent cc1227f619
commit 98710901f1
1 changed files with 9 additions and 5 deletions

View File

@ -302,6 +302,8 @@ class HttpRequest(WebRequest):
_logger.debug("%s --> %s.%s %r", self.httprequest.method, method.im_class.__name__, method.__name__, akw)
try:
r = method(self, **self.params)
except werkzeug.exceptions.HTTPException, e:
r = e
except Exception, e:
_logger.exception("An exception occured during an http request")
se = serialize_exception(e)
@ -311,11 +313,13 @@ class HttpRequest(WebRequest):
'data': se
}
r = werkzeug.exceptions.InternalServerError(cgi.escape(simplejson.dumps(error)))
if self.debug or 1:
if isinstance(r, (werkzeug.wrappers.BaseResponse, werkzeug.exceptions.HTTPException)):
_logger.debug('<-- %s', r)
else:
_logger.debug("<-- size: %s", len(r))
else:
if not r:
r = werkzeug.wrappers.Response(status=204) # no content
if isinstance(r, (werkzeug.wrappers.BaseResponse, werkzeug.exceptions.HTTPException)):
_logger.debug('<-- %s', r)
else:
_logger.debug("<-- size: %s", len(r))
return r
def make_response(self, data, headers=None, cookies=None):