[FIX] dispatch AccessErrors
authorFabien Meghazi <fme@openerp.com>
Mon, 25 Nov 2013 15:56:29 +0000 (16:56 +0100)
committerFabien Meghazi <fme@openerp.com>
Mon, 25 Nov 2013 15:56:29 +0000 (16:56 +0100)
bzr revid: fme@openerp.com-20131125155629-nmf0uk2agamzrhma

openerp/addons/base/ir/ir_http.py
openerp/http.py

index 4a9890c..c5fe86e 100644 (file)
@@ -89,9 +89,13 @@ class ir_http(osv.AbstractModel):
         getattr(self, "_auth_method_%s" % auth_method)()
         return auth_method
 
-    def _handle_exception(self, e):
-        fn = getattr(self, '_handle_%s' % getattr(e, 'code', 500), self._handle_500)
-        return fn(e)
+    def _handle_exception(self, exception):
+        if isinstance(exception, openerp.exceptions.AccessError):
+            fn = self._handle_403
+        else:
+            code = getattr(exception, 'code', 500)
+            fn = getattr(self, '_handle_%s' % code)
+        return fn(exception)
 
     def _handle_404(self, exception):
         raise exception
index 2637846..a2e4f57 100644 (file)
@@ -402,7 +402,7 @@ class HttpRequest(WebRequest):
     def dispatch(self):
         try:
             r = self._call_function(**self.params)
-        except werkzeug.exceptions.HTTPException, e:
+        except (openerp.exceptions.AccessError, werkzeug.exceptions.HTTPException), e:
             r = e
         except Exception, e:
             _logger.exception("An exception occured during an http request")