diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c598e224bba..9d3993a24c9 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -33,7 +33,6 @@ import openerp import openerp.modules.registry from openerp.addons.base.ir.ir_qweb import AssetsBundle, QWebTemplateNotFound from openerp.modules import get_module_resource -from openerp.service import model as service_model from openerp.tools import topological_sort from openerp.tools.translate import _ from openerp.tools import ustr @@ -934,10 +933,7 @@ class DataSet(http.Controller): if method.startswith('_'): raise Exception("Access Denied: Underscore prefixed methods cannot be remotely called") - @service_model.check - def checked_call(__dbname, *args, **kwargs): - return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) - return checked_call(request.db, *args, **kwargs) + return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) @http.route('/web/dataset/call', type='json', auth="user") def call(self, model, method, args, domain_id=None, context_id=None): diff --git a/openerp/service/model.py b/openerp/service/model.py index 11054f237d7..bace80bb896 100644 --- a/openerp/service/model.py +++ b/openerp/service/model.py @@ -54,7 +54,12 @@ def check(f): if args and isinstance(args[-1], dict): ctx = args[-1] elif isinstance(kwargs, dict): - ctx = kwargs.get('context', {}) + if 'context' in kwargs: + ctx = kwargs['context'] + elif 'kwargs' in kwargs: + # http entry points such as call_kw() + ctx = kwargs['kwargs'].get('context') + uid = 1 if args and isinstance(args[0], (long, int)):