From 34d2fd4d022f9c29f06abe2730fc5695b0d39c74 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 11 Oct 2013 13:34:50 +0200 Subject: [PATCH] [FIX] web: request dispatching wraps controller function call to retry request if psycopg raise OperationError and convert IntegrityError into except_orm with translated message. bzr revid: chs@openerp.com-20131011113450-ktoaxul22p3nql75 --- addons/web/http.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/addons/web/http.py b/addons/web/http.py index 3699b993521..b02a83ee746 100644 --- a/addons/web/http.py +++ b/addons/web/http.py @@ -35,7 +35,7 @@ import urllib import urllib2 import openerp -import openerp.service.security as security +from openerp.service import security, model as service_model from openerp.tools import config import inspect @@ -1040,10 +1040,17 @@ class Root(object): func, arguments = urls.match(path) arguments = dict([(k, v) for k, v in arguments.items() if not k.startswith("_ignored_")]) + @service_model.check + def checked_call(dbname, *a, **kw): + return func(*a, **kw) + def nfunc(*args, **kwargs): kwargs.update(arguments) if getattr(func, '_first_arg_is_req', False): args = (request,) + args + + if request.db: + return checked_call(request.db, *args, **kwargs) return func(*args, **kwargs) request.func = nfunc