Put back stuff removed by merge
bzr revid: nicolas.vanhoren@openerp.com-20130607103749-7pe6k3vgwudohnxo
This commit is contained in:
parent
956a05e0f2
commit
9b1904e892
|
@ -34,6 +34,9 @@ import openerp
|
|||
|
||||
import session
|
||||
|
||||
import inspect
|
||||
import functools
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
#----------------------------------------------------------
|
||||
|
@ -197,10 +200,10 @@ class JsonRequest(WebRequest):
|
|||
else:
|
||||
self.jsonrequest = simplejson.loads(request, object_hook=reject_nonliteral)
|
||||
self.init(self.jsonrequest.get("params", {}))
|
||||
if _logger.isEnabledFor(logging.DEBUG):
|
||||
_logger.debug("--> %s.%s\n%s", method.im_class.__name__, method.__name__, pprint.pformat(self.jsonrequest))
|
||||
#if _logger.isEnabledFor(logging.DEBUG):
|
||||
# _logger.debug("--> %s.%s\n%s", method.im_class.__name__, method.__name__, pprint.pformat(self.jsonrequest))
|
||||
response['id'] = self.jsonrequest.get('id')
|
||||
response["result"] = method(self, **self.params)
|
||||
response["result"] = method(**self.params)
|
||||
except session.AuthenticationError, e:
|
||||
se = serialize_exception(e)
|
||||
error = {
|
||||
|
@ -292,9 +295,9 @@ class HttpRequest(WebRequest):
|
|||
akw[key] = value
|
||||
else:
|
||||
akw[key] = type(value)
|
||||
_logger.debug("%s --> %s.%s %r", self.httprequest.method, method.im_class.__name__, method.__name__, akw)
|
||||
#_logger.debug("%s --> %s.%s %r", self.httprequest.method, method.im_class.__name__, method.__name__, akw)
|
||||
try:
|
||||
r = method(self, **self.params)
|
||||
r = method(**self.params)
|
||||
except Exception, e:
|
||||
_logger.exception("An exception occured during an http request")
|
||||
se = serialize_exception(e)
|
||||
|
@ -380,6 +383,19 @@ controllers_path = {}
|
|||
class ControllerType(type):
|
||||
def __init__(cls, name, bases, attrs):
|
||||
super(ControllerType, cls).__init__(name, bases, attrs)
|
||||
|
||||
# create wrappers for old-style methods with req as first argument
|
||||
cls._methods_wrapper = {}
|
||||
for k, v in attrs.items():
|
||||
if inspect.isfunction(v):
|
||||
spec = inspect.getargspec(v)
|
||||
first_arg = spec.args[1] if len(spec.args) >= 2 else None
|
||||
if first_arg in ["req", "request"]:
|
||||
def build_new(nv):
|
||||
return lambda self, *args, **kwargs: nv(self, request, *args, **kwargs)
|
||||
cls._methods_wrapper[k] = build_new(v)
|
||||
|
||||
# store the controller in the controllers list
|
||||
name_class = ("%s.%s" % (cls.__module__, cls.__name__), cls)
|
||||
controllers_class.append(name_class)
|
||||
path = attrs.get('_cp_path')
|
||||
|
@ -397,6 +413,12 @@ class Controller(object):
|
|||
|
||||
return object.__new__(cls)
|
||||
|
||||
def get_wrapped_method(self, name):
|
||||
if name in self.__class__._methods_wrapper:
|
||||
return functools.partial(self.__class__._methods_wrapper[name], self)
|
||||
else:
|
||||
return getattr(self, name)
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Session context manager
|
||||
#----------------------------------------------------------
|
||||
|
@ -625,6 +647,7 @@ class Root(object):
|
|||
method = getattr(c, method_name, None)
|
||||
if method:
|
||||
exposed = getattr(method, 'exposed', False)
|
||||
method = c.get_wrapped_method(method_name)
|
||||
if exposed == 'json':
|
||||
_logger.debug("Dispatch json to %s %s %s", ps, c, method_name)
|
||||
def fct(_request):
|
||||
|
|
|
@ -21,17 +21,17 @@ class TestDataSetController(unittest2.TestCase):
|
|||
self.read.return_value = []
|
||||
|
||||
self.assertEqual(
|
||||
self.dataset.do_search_read(self.request, 'fake.model'),
|
||||
self.dataset.do_search_read('fake.model'),
|
||||
{'records': [], 'length': 0})
|
||||
self.read.assert_called_once_with(
|
||||
[], False, self.request.context)
|
||||
[], False, req.context)
|
||||
|
||||
def test_regular_find(self):
|
||||
self.search.return_value = [1, 2, 3]
|
||||
|
||||
self.dataset.do_search_read(self.request, 'fake.model')
|
||||
self.dataset.do_search_read('fake.model')
|
||||
self.read.assert_called_once_with(
|
||||
[1, 2, 3], False,self.request.context)
|
||||
[1, 2, 3], False, req.context)
|
||||
|
||||
def test_ids_shortcut(self):
|
||||
self.search.return_value = [1, 2, 3]
|
||||
|
@ -42,6 +42,6 @@ class TestDataSetController(unittest2.TestCase):
|
|||
]
|
||||
|
||||
self.assertEqual(
|
||||
self.dataset.do_search_read(self.request, 'fake.model', ['id']),
|
||||
self.dataset.do_search_read('fake.model', ['id']),
|
||||
{'records': [{'id': 1}, {'id': 2}, {'id': 3}], 'length': 3})
|
||||
self.assertFalse(self.read.called)
|
||||
|
|
|
@ -21,7 +21,7 @@ class LoadTest(unittest2.TestCase):
|
|||
# Have self.request.session.model() return a different mock object for
|
||||
# each model (but always the same mock for a given model name)
|
||||
models = collections.defaultdict(mock.Mock)
|
||||
model = self.request.session.model.side_effect = \
|
||||
model = req.session.model.side_effect = \
|
||||
lambda model_name: models[model_name]
|
||||
|
||||
self.MockMenus = model('ir.ui.menu')
|
||||
|
@ -31,7 +31,7 @@ class LoadTest(unittest2.TestCase):
|
|||
}]
|
||||
|
||||
def tearDown(self):
|
||||
del self.request
|
||||
self.tmp_req.__exit__()
|
||||
del self.MockMenus
|
||||
del self.menu
|
||||
|
||||
|
@ -39,11 +39,11 @@ class LoadTest(unittest2.TestCase):
|
|||
self.MockMenus.search.return_value = []
|
||||
self.MockMenus.read.return_value = []
|
||||
|
||||
root = self.menu.load(self.request)
|
||||
root = self.menu.load()
|
||||
|
||||
self.MockMenus.search.assert_called_with(
|
||||
[('parent_id','=', False)], 0, False, False,
|
||||
self.request.context)
|
||||
req.context)
|
||||
|
||||
self.assertEqual(root['all_menu_ids'], [])
|
||||
|
||||
|
@ -59,16 +59,16 @@ class LoadTest(unittest2.TestCase):
|
|||
{'id': 2, 'sequence': 3, 'parent_id': False},
|
||||
]
|
||||
|
||||
root = self.menu.load(self.request)
|
||||
root = self.menu.load()
|
||||
|
||||
self.MockMenus.search.assert_called_with(
|
||||
[('id','child_of', [1, 2, 3])], 0, False, False,
|
||||
self.request.context)
|
||||
req.context)
|
||||
|
||||
self.MockMenus.read.assert_called_with(
|
||||
[1, 2, 3], ['name', 'sequence', 'parent_id',
|
||||
'action'],
|
||||
self.request.context)
|
||||
req.context)
|
||||
|
||||
self.assertEqual(root['all_menu_ids'], [1, 2, 3])
|
||||
|
||||
|
@ -98,11 +98,11 @@ class LoadTest(unittest2.TestCase):
|
|||
{'id': 4, 'sequence': 2, 'parent_id': [2, '']},
|
||||
])
|
||||
|
||||
root = self.menu.load(self.request)
|
||||
root = self.menu.load()
|
||||
|
||||
self.MockMenus.search.assert_called_with(
|
||||
[('id','child_of', [1])], 0, False, False,
|
||||
self.request.context)
|
||||
req.context)
|
||||
|
||||
self.assertEqual(root['all_menu_ids'], [1, 2, 3, 4])
|
||||
|
||||
|
|
Loading…
Reference in New Issue