[FIX] http.dispatch: call handle_exception() even w/ session missing/expired
authorOlivier Dony <odo@openerp.com>
Wed, 25 Jun 2014 15:41:24 +0000 (17:41 +0200)
committerOlivier Dony <odo@openerp.com>
Wed, 25 Jun 2014 15:41:40 +0000 (17:41 +0200)
This gives JSONRequests a chance to return
a proper JSON-RPC result when an HTTPException
is raised downstream, instead of returning a
plain HTML 404 error.

openerp/http.py

index d32d003..15565d2 100644 (file)
@@ -1118,7 +1118,10 @@ class Root(object):
             request = self.get_request(httprequest)
 
             def _dispatch_nodb():
-                func, arguments = self.nodb_routing_map.bind_to_environ(request.httprequest.environ).match()
+                try:
+                    func, arguments = self.nodb_routing_map.bind_to_environ(request.httprequest.environ).match()
+                except werkzeug.exceptions.HTTPException, e:
+                    return request._handle_exception(e)
                 request.set_handler(func, arguments, "none")
                 result = request.dispatch()
                 return result