diff --git a/addons/web/static/src/js/pyeval.js b/addons/web/static/src/js/pyeval.js index 554c4aa7db0..c1e1264aaf5 100644 --- a/addons/web/static/src/js/pyeval.js +++ b/addons/web/static/src/js/pyeval.js @@ -502,12 +502,15 @@ openerp.web.pyeval = function (instance) { return py.PY_call(py.PY_getAttr(d, 'strftime'), [args.format]); }); + var args = _.map(('year month day hour minute second microsecond ' + + 'years months weeks days hours minutes secondes microseconds ' + + 'weekday leakdays yearday nlyearday').split(' '), function (arg) { + return [arg, null] + }); + args.unshift('*'); var relativedelta = py.type('relativedelta', null, { __init__: function () { - this.ops = py.PY_parseArgs(arguments, - '* year month day hour minute second microsecond ' - + 'years months weeks days hours minutes secondes microseconds ' - + 'weekday leakdays yearday nlyearday'); + this.ops = py.PY_parseArgs(arguments, args); }, __add__: function (other) { if (!py.PY_isInstance(other, datetime.date)) { diff --git a/addons/web/static/test/evals.js b/addons/web/static/test/evals.js index 0e1c1351b98..2cc3655a0aa 100644 --- a/addons/web/static/test/evals.js +++ b/addons/web/static/test/evals.js @@ -259,6 +259,12 @@ openerp.testing.section('eval.types', { py.eval('a + a', ctx); }, /^Error: TypeError:/); }); + test('relastivedelta', function (instance) { + strictEqual( + py.eval("(datetime.date(2012, 2, 15) + relativedelta(days=-1)).strftime('%Y-%m-%d 23:59:59')", + instance.web.pyeval.context()), + "2012-02-14 23:59:59"); + }) }); openerp.testing.section('eval.edc', { dependencies: ['web.data'],