diff --git a/addons/board/static/src/js/favorite_menu.js b/addons/board/static/src/js/favorite_menu.js index 112b4d634fa..cdb531914c9 100644 --- a/addons/board/static/src/js/favorite_menu.js +++ b/addons/board/static/src/js/favorite_menu.js @@ -6,7 +6,7 @@ var Context = require('web.Context'); var core = require('web.core'); var Domain = require('web.Domain'); var FavoriteMenu = require('web.FavoriteMenu'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var _t = core._t; var QWeb = core.qweb; @@ -64,7 +64,7 @@ FavoriteMenu.include({ }); context.add({ - group_by: pyeval.eval('groupbys', search_data.groupbys || []) + group_by: pyUtils.eval('groupbys', search_data.groupbys || []) }); // AAB: trigger_up an event that will be intercepted by the controller, // as soon as the controller is the parent of the control panel @@ -77,7 +77,7 @@ FavoriteMenu.include({ var currentAction = am.getCurrentAction(); var controller = am.getCurrentController(); context.add(controller.widget.getContext()); - var c = pyeval.eval('context', context); + var c = pyUtils.eval('context', context); for (var k in c) { if (c.hasOwnProperty(k) && /^search_default_/.test(k)) { delete c[k]; diff --git a/addons/google_spreadsheet/static/src/js/search.js b/addons/google_spreadsheet/static/src/js/search.js index 20b7c804f33..2177407520b 100644 --- a/addons/google_spreadsheet/static/src/js/search.js +++ b/addons/google_spreadsheet/static/src/js/search.js @@ -6,7 +6,7 @@ var core = require('web.core'); var data = require('web.data'); var Domain = require('web.Domain'); var FavoriteMenu = require('web.FavoriteMenu'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var QWeb = core.qweb; @@ -30,7 +30,7 @@ FavoriteMenu.include({ list_view = _.findWhere(controller.widget.actionViews, {type: 'list'}), list_view_id = list_view ? list_view.viewID : false, domain = [], - groupbys = pyeval.eval('groupbys', sv_data.groupbys).join(" "), + groupbys = pyUtils.eval('groupbys', sv_data.groupbys).join(" "), ds = new data.DataSet(this, 'google.drive.config'); _.each(sv_data.domains, function (d) { diff --git a/addons/mail/static/src/js/discuss.js b/addons/mail/static/src/js/discuss.js index ba0ad31a849..47af7ca3f08 100644 --- a/addons/mail/static/src/js/discuss.js +++ b/addons/mail/static/src/js/discuss.js @@ -12,7 +12,7 @@ var core = require('web.core'); var data = require('web.data'); var Dialog = require('web.Dialog'); var dom = require('web.dom'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var SearchView = require('web.SearchView'); var session = require('web.session'); @@ -1320,7 +1320,7 @@ var Discuss = AbstractAction.extend(ControlPanelMixin, { _onSearch: function (ev) { ev.stopPropagation(); var session = this.getSession(); - var result = pyeval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: ev.data.domains, contexts: [session.user_context], }); diff --git a/addons/sale_timesheet/static/src/js/timesheet_plan.js b/addons/sale_timesheet/static/src/js/timesheet_plan.js index 6596bd4ea88..afebfac23fe 100644 --- a/addons/sale_timesheet/static/src/js/timesheet_plan.js +++ b/addons/sale_timesheet/static/src/js/timesheet_plan.js @@ -5,7 +5,7 @@ var AbstractAction = require('web.AbstractAction'); var ControlPanelMixin = require('web.ControlPanelMixin'); var core = require('web.core'); var data = require('web.data'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var SearchView = require('web.SearchView'); var _t = core._t; @@ -297,7 +297,7 @@ var ProjectPlan = AbstractAction.extend(ControlPanelMixin, { event.stopPropagation(); var session = this.getSession(); // group by are disabled, so we don't take care of them - var result = pyeval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: event.data.domains, contexts: [session.user_context].concat(event.data.contexts) }); diff --git a/addons/web/static/src/js/_deprecated/data.js b/addons/web/static/src/js/_deprecated/data.js index eb70f330076..fd19ff61af7 100644 --- a/addons/web/static/src/js/_deprecated/data.js +++ b/addons/web/static/src/js/_deprecated/data.js @@ -7,7 +7,7 @@ var concurrency = require('web.concurrency'); var mixins = require('web.mixins'); var session = require('web.session'); var translation = require('web.translation'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var _t = translation._t; @@ -85,9 +85,9 @@ var Query = Class.extend({ return session.rpc('/web/dataset/search_read', { model: this._model.name, fields: this._fields || false, - domain: pyeval.eval('domains', + domain: pyUtils.eval('domains', [this._model.domain(this._filter)]), - context: pyeval.eval('contexts', + context: pyUtils.eval('contexts', [this._model.context(this._context)]), offset: this._offset, limit: this._limit, @@ -138,7 +138,7 @@ var Query = Class.extend({ * @returns {jQuery.Deferred> | null} */ group_by: function (grouping) { - var ctx = pyeval.eval( + var ctx = pyUtils.eval( 'context', this._model.context(this._context)); // undefined passed in explicitly (!) @@ -609,7 +609,7 @@ var DataSet = Class.extend(mixins.PropertiesMixin, { return session.rpc('/web/dataset/resequence', { model: this.model, ids: ids, - context: pyeval.eval( + context: pyUtils.eval( 'context', this.get_context(options.context)), }).then(function (results) { return results; @@ -797,7 +797,7 @@ var Model = Class.extend({ * Call a method (over RPC) on the bound OpenERP model. * * @param {String} method name of the method to call - * @param {Array} [args] positional arguments + * @param {Array} [args] positipyEvalonal arguments * @param {Object} [kwargs] keyword arguments * @param {Object} [options] additional options for the rpc() method * @returns {jQuery.Deferred<>} call result @@ -810,7 +810,7 @@ var Model = Class.extend({ kwargs = args; args = []; } - pyeval.ensure_evaluated(args, kwargs); + pyUtils.ensure_evaluated(args, kwargs); var call_kw = '/web/dataset/call_kw/' + this.name + '/' + method; return session.rpc(call_kw, { model: this.name, @@ -820,7 +820,7 @@ var Model = Class.extend({ }, options); }, call_button: function (method, args) { - pyeval.ensure_evaluated(args, {}); + pyUtils.ensure_evaluated(args, {}); return session.rpc('/web/dataset/call_button', { model: this.name, method: method, diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js index f98447c8983..2eb698b5424 100644 --- a/addons/web/static/src/js/chrome/action_manager.js +++ b/addons/web/static/src/js/chrome/action_manager.js @@ -19,7 +19,7 @@ var core = require('web.core'); var Dialog = require('web.Dialog'); var dom = require('web.dom'); var framework = require('web.framework'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var Widget = require('web.Widget'); var _t = core._t; @@ -781,9 +781,9 @@ var ActionManager = Widget.extend({ _preprocessAction: function (action, options) { // ensure that the context and domain are evaluated var context = new Context(this.userContext, options.additional_context, action.context); - action.context = pyeval.eval('context', context); + action.context = pyUtils.eval('context', context); if (action.domain) { - action.domain = pyeval.eval('domain', action.domain, action.context); + action.domain = pyUtils.eval('domain', action.domain, action.context); } action._originalAction = JSON.stringify(action); diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js index e040096f60b..0b18b04172a 100644 --- a/addons/web/static/src/js/chrome/action_manager_act_window.js +++ b/addons/web/static/src/js/chrome/action_manager_act_window.js @@ -11,7 +11,7 @@ var config = require('web.config'); var Context = require('web.Context'); var core = require('web.core'); var data = require('web.data'); // this will be removed at some point -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var SearchView = require('web.SearchView'); var view_registry = require('web.view_registry'); @@ -522,7 +522,7 @@ ActionManager.include({ var domains = searchData.domains; var groupbys = searchData.groupbys; var action_context = action.context || {}; - var results = pyeval.eval_domains_and_contexts({ + var results = pyUtils.eval_domains_and_contexts({ domains: [action.domain || []].concat(domains || []), contexts: [action_context].concat(contexts || []), group_by_seq: groupbys || [], @@ -703,7 +703,7 @@ ActionManager.include({ var actionData = ev.data.action_data; var env = ev.data.env; var context = new Context(env.context, actionData.context || {}); - var recordID = env.currentID || null; // pyeval handles null value, not undefined + var recordID = env.currentID || null; // pyUtils handles null value, not undefined var def; // determine the action to execute according to the actionData @@ -733,7 +733,7 @@ ActionManager.include({ }); } else if (actionData.type === 'action') { // execute a given action, so load it first - def = this._loadAction(actionData.name, _.extend(pyeval.eval('context', context), { + def = this._loadAction(actionData.name, _.extend(pyUtils.eval('context', context), { active_model: env.model, active_ids: env.resIDs, active_id: recordID, @@ -751,7 +751,7 @@ ActionManager.include({ // code below handles the first case i.e 'effect' attribute on button. var effect = false; if (actionData.effect) { - effect = pyeval.py_eval(actionData.effect); + effect = pyUtils.py_eval(actionData.effect); } if (action && action.constructor === Object) { diff --git a/addons/web/static/src/js/chrome/sidebar.js b/addons/web/static/src/js/chrome/sidebar.js index bf9e3668c35..47d598aaeb8 100644 --- a/addons/web/static/src/js/chrome/sidebar.js +++ b/addons/web/static/src/js/chrome/sidebar.js @@ -3,7 +3,7 @@ odoo.define('web.Sidebar', function (require) { var Context = require('web.Context'); var core = require('web.core'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var Widget = require('web.Widget'); var QWeb = core.qweb; @@ -146,7 +146,7 @@ var Sidebar = Widget.extend({ activeIdsContext.active_domain = env.domain; } - var context = pyeval.eval('context', new Context(env.context, activeIdsContext)); + var context = pyUtils.eval('context', new Context(env.context, activeIdsContext)); self._rpc({ route: '/web/action/load', params: { diff --git a/addons/web/static/src/js/core/context.js b/addons/web/static/src/js/core/context.js index 53254bd718a..a7ce801708d 100644 --- a/addons/web/static/src/js/core/context.js +++ b/addons/web/static/src/js/core/context.js @@ -2,7 +2,7 @@ odoo.define('web.Context', function (require) { "use strict"; var Class = require('web.Class'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var Context = Class.extend({ init: function () { @@ -24,7 +24,7 @@ var Context = Class.extend({ return this; }, eval: function () { - return pyeval.eval('context', this); + return pyUtils.eval('context', this); }, /** * Set the evaluation context to be used when we actually eval. diff --git a/addons/web/static/src/js/core/domain.js b/addons/web/static/src/js/core/domain.js index 8ce570b8605..86e1f85a634 100644 --- a/addons/web/static/src/js/core/domain.js +++ b/addons/web/static/src/js/core/domain.js @@ -2,7 +2,7 @@ odoo.define("web.Domain", function (require) { "use strict"; var collections = require("web.collections"); -var pyeval = require("web.pyeval"); +var pyUtils = require("web.py_utils"); /** * The Domain Class allows to work with a domain as a tree and provides tools @@ -240,7 +240,7 @@ var Domain = collections.Tree.extend({ */ stringToArray: function (domain, evalContext) { if (!_.isString(domain)) return _.clone(domain); - return pyeval.eval("domain", domain ? domain.replace(/%%/g, '%') : "[]", evalContext); + return pyUtils.eval("domain", domain ? domain.replace(/%%/g, '%') : "[]", evalContext); }, /** * Makes implicit "&" operators explicit in the given JS prefix-array diff --git a/addons/web/static/src/js/core/pyeval.js b/addons/web/static/src/js/core/py_utils.js similarity index 99% rename from addons/web/static/src/js/core/pyeval.js rename to addons/web/static/src/js/core/py_utils.js index 47d6d07bf64..8590965cee2 100644 --- a/addons/web/static/src/js/core/pyeval.js +++ b/addons/web/static/src/js/core/py_utils.js @@ -1,4 +1,4 @@ -odoo.define('web.pyeval', function (require) { +odoo.define('web.py_utils', function (require) { "use strict"; var core = require('web.core'); diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js index 2c4ed711223..cb4afe73476 100644 --- a/addons/web/static/src/js/views/basic/basic_view.js +++ b/addons/web/static/src/js/views/basic/basic_view.js @@ -15,7 +15,7 @@ var BasicController = require('web.BasicController'); var BasicModel = require('web.BasicModel'); var config = require('web.config'); var fieldRegistry = require('web.field_registry'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var utils = require('web.utils'); var BasicView = AbstractView.extend({ @@ -222,7 +222,7 @@ var BasicView = AbstractView.extend({ }); if (!_.isObject(attrs.options)) { // parent arch could have already been processed (TODO this should not happen) - attrs.options = attrs.options ? pyeval.py_eval(attrs.options) : {}; + attrs.options = attrs.options ? pyUtils.py_eval(attrs.options) : {}; } if (attrs.on_change && !field.onChange) { diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js index ae1a8f7305b..a210c07a885 100644 --- a/addons/web/static/src/js/views/list/list_controller.js +++ b/addons/web/static/src/js/views/list/list_controller.js @@ -11,7 +11,7 @@ var core = require('web.core'); var BasicController = require('web.BasicController'); var DataExport = require('web.DataExport'); var Dialog = require('web.Dialog'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var Sidebar = require('web.Sidebar'); var _t = core._t; @@ -67,7 +67,7 @@ var ListController = BasicController.extend({ if (this.$('thead .o_list_record_selector input').prop('checked')) { var searchData = this.searchView.build_search_data(); var userContext = this.getSession().user_context; - var results = pyeval.eval_domains_and_contexts({ + var results = pyUtils.eval_domains_and_contexts({ domains: searchData.domains, contexts: [userContext].concat(searchData.contexts), group_by_seq: searchData.groupbys || [] diff --git a/addons/web/static/src/js/views/search/favorites_menu.js b/addons/web/static/src/js/views/search/favorites_menu.js index f0962e6177e..bd622797c49 100644 --- a/addons/web/static/src/js/views/search/favorites_menu.js +++ b/addons/web/static/src/js/views/search/favorites_menu.js @@ -4,7 +4,7 @@ odoo.define('web.FavoriteMenu', function (require) { var config = require('web.config'); var core = require('web.core'); var data_manager = require('web.data_manager'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var session = require('web.session'); var Widget = require('web.Widget'); @@ -105,7 +105,7 @@ return Widget.extend({ controllerContext = ctx; }, }); - var results = pyeval.eval_domains_and_contexts({ + var results = pyUtils.eval_domains_and_contexts({ domains: search.domains, contexts: [user_context].concat(search.contexts.concat(controllerContext || [])), group_by_seq: search.groupbys || [], diff --git a/addons/web/static/src/js/views/search/search_inputs.js b/addons/web/static/src/js/views/search/search_inputs.js index 00d4d6281a0..d3f36254819 100644 --- a/addons/web/static/src/js/views/search/search_inputs.js +++ b/addons/web/static/src/js/views/search/search_inputs.js @@ -5,7 +5,7 @@ var Context = require('web.Context'); var core = require('web.core'); var Domain = require('web.Domain'); var field_utils = require('web.field_utils'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var time = require('web.time'); var utils = require('web.utils'); var Widget = require('web.Widget'); @@ -416,7 +416,7 @@ var ManyToOneField = CharField.extend({ expand: function (needle) { var self = this; // FIXME: "concurrent" searches (multiple requests, mis-ordered responses) - var context = pyeval.eval( + var context = pyUtils.eval( 'contexts', [this.searchview.dataset.get_context()]); var args = this.attrs.domain; if (typeof args === 'string') { @@ -458,7 +458,7 @@ var ManyToOneField = CharField.extend({ // to handle this as if it were a single value. value = value[0]; } - var context = pyeval.eval('contexts', [this.searchview.dataset.get_context()]); + var context = pyUtils.eval('contexts', [this.searchview.dataset.get_context()]); return this._rpc({ model: this.attrs.relation, @@ -524,7 +524,7 @@ var FilterGroup = Input.extend(/** @lends instance.web.search.FilterGroup# */{ if (!(this instanceof GroupbyGroup) && _(filters).all(function (f) { if (!f.attrs.context) { return false; } - var c = pyeval.eval('context', f.attrs.context); + var c = pyUtils.eval('context', f.attrs.context); return !_.isEmpty(c.group_by);})) { return new GroupbyGroup(filters, parent, intervalMapping); } diff --git a/addons/web/static/src/js/views/search/search_view.js b/addons/web/static/src/js/views/search/search_view.js index 098df30c46a..e5a00434745 100644 --- a/addons/web/static/src/js/views/search/search_view.js +++ b/addons/web/static/src/js/views/search/search_view.js @@ -7,7 +7,7 @@ var core = require('web.core'); var FavoriteMenu = require('web.FavoriteMenu'); var FiltersMenu = require('web.FiltersMenu'); var GroupByMenu = require('web.GroupByMenu'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var search_inputs = require('web.search_inputs'); var utils = require('web.utils'); var Widget = require('web.Widget'); @@ -683,7 +683,7 @@ var SearchView = Widget.extend({ var category = 'filters'; if (item.attrs.context) { try { - var context = pyeval.eval('context', item.attrs.context); + var context = pyUtils.eval('context', item.attrs.context); if (context.group_by) { category = 'group_by'; item.attrs.fieldName = context.group_by.split(':')[0]; diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 55f9a2e85d7..ed0adf0ff3b 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -7,7 +7,7 @@ var Dialog = require('web.Dialog'); var dom = require('web.dom'); var ListController = require('web.ListController'); var ListView = require('web.ListView'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var SearchView = require('web.SearchView'); var view_registry = require('web.view_registry'); @@ -293,7 +293,7 @@ var SelectCreateDialog = ViewDialog.extend({ var user_context = this.getSession().user_context; var _super = this._super.bind(this); - var context = pyeval.eval_domains_and_contexts({ + var context = pyUtils.eval_domains_and_contexts({ domains: [], contexts: [user_context, this.context] }).context; @@ -397,7 +397,7 @@ var SelectCreateDialog = ViewDialog.extend({ }); }, _process_search_data: function (domains, contexts, groupbys) { - var results = pyeval.eval_domains_and_contexts({ + var results = pyUtils.eval_domains_and_contexts({ domains: [this.domain].concat(domains), contexts: [this.context].concat(contexts), group_by_seq: groupbys || [], diff --git a/addons/web/static/src/js/widgets/data_export.js b/addons/web/static/src/js/widgets/data_export.js index 68c8b23af13..8a09f7fa034 100644 --- a/addons/web/static/src/js/widgets/data_export.js +++ b/addons/web/static/src/js/widgets/data_export.js @@ -6,7 +6,7 @@ var crash_manager = require('web.crash_manager'); var data = require('web.data'); var Dialog = require('web.Dialog'); var framework = require('web.framework'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var QWeb = core.qweb; var _t = core._t; @@ -467,7 +467,7 @@ var DataExport = Dialog.extend({ fields: exported_fields, ids: this.ids_to_export, domain: this.domain, - context: pyeval.eval('contexts', [this.record.getContext()]), + context: pyUtils.eval('contexts', [this.record.getContext()]), import_compat: !!this.$import_compat_radios.filter(':checked').val(), })}, complete: framework.unblockUI, diff --git a/addons/web/static/tests/core/pyeval_tests.js b/addons/web/static/tests/core/py_utils_tests.js similarity index 93% rename from addons/web/static/tests/core/pyeval_tests.js rename to addons/web/static/tests/core/py_utils_tests.js index 95d8783ad96..f53c4dca8f6 100644 --- a/addons/web/static/tests/core/pyeval_tests.js +++ b/addons/web/static/tests/core/py_utils_tests.js @@ -1,8 +1,8 @@ -odoo.define('web.pyEval_tests', function(require) { +odoo.define('web.py_utils_tests', function(require) { "use strict"; var Context = require('web.Context'); -var pyEval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var time = require('web.time'); QUnit.module('core', function () { @@ -12,9 +12,9 @@ QUnit.module('core', function () { QUnit.test('simple python expression', function(assert) { assert.expect(2); - var result = pyEval.py_eval("True and False"); + var result = pyUtils.py_eval("True and False"); assert.strictEqual(result, false, "should properly evaluate basic expression"); - result = pyEval.py_eval("a + b", {a: 1, b: 41}); + result = pyUtils.py_eval("a + b", {a: 1, b: 41}); assert.strictEqual(result, 42, "should properly evaluate basic sum"); }); @@ -38,7 +38,7 @@ QUnit.module('core', function () { function makeTimeCheck (assert) { - var context = pyEval.context(); + var context = pyUtils.context(); return function (expr, func, message) { // evaluate expr between two calls to new Date(), and check that // the result is between the transformed dates @@ -51,7 +51,7 @@ QUnit.module('core', function () { // Port from pypy/lib_pypy/test_datetime.py function makeEq(assert, c2) { - var ctx = pyEval.context(); + var ctx = pyUtils.context(); var c = _.extend({ td: ctx.datetime.timedelta }, c2 || {}); return function (a, b, message) { assert.ok(py.eval(a + ' == ' + b, c), message); @@ -81,7 +81,7 @@ QUnit.module('core', function () { QUnit.test('context_today', function (assert) { assert.expect(1); - var check = makeTimeCheck(assert, pyEval); + var check = makeTimeCheck(assert, pyUtils); check("context_today().strftime('%Y-%m-%d')", function(d) { return String(_.str.sprintf('%04d-%02d-%02d', @@ -119,7 +119,7 @@ QUnit.module('core', function () { QUnit.test('timedelta.test_computations', function (assert) { assert.expect(28); - var c = pyEval.context(); + var c = pyUtils.context(); var zero = py.float.fromJSON(0); var eq = makeEq(assert, { // one week @@ -174,7 +174,7 @@ QUnit.module('core', function () { QUnit.test('timedelta.test_basic_attributes', function (assert) { assert.expect(3); - var ctx = pyEval.context(); + var ctx = pyUtils.context(); assert.strictEqual(py.eval('datetime.timedelta(1, 7, 31).days', ctx), 1); assert.strictEqual(py.eval('datetime.timedelta(1, 7, 31).seconds', ctx), 7); assert.strictEqual(py.eval('datetime.timedelta(1, 7, 31).microseconds', ctx), 31); @@ -183,7 +183,7 @@ QUnit.module('core', function () { QUnit.test('timedelta.test_total_seconds', function (assert) { assert.expect(6); - var c = { timedelta: pyEval.context().datetime.timedelta }; + var c = { timedelta: pyUtils.context().datetime.timedelta }; assert.strictEqual(py.eval('timedelta(365).total_seconds()', c), 31536000); assert.strictEqual( py.eval('timedelta(seconds=123456.789012).total_seconds()', c), @@ -201,7 +201,7 @@ QUnit.module('core', function () { QUnit.test('timedelta.test_str', function (assert) { assert.expect(10); - var c = { td: pyEval.context().datetime.timedelta }; + var c = { td: pyUtils.context().datetime.timedelta }; assert.strictEqual(py.eval('str(td(1))', c), "1 day, 0:00:00"); assert.strictEqual(py.eval('str(td(-1))', c), "-1 day, 0:00:00"); @@ -228,7 +228,7 @@ QUnit.module('core', function () { assert.expect(3); var td = py.PY_call( - pyEval.context().datetime.timedelta, + pyUtils.context().datetime.timedelta, {microseconds: py.float.fromJSON(-1)}); assert.strictEqual(td.days, -1); assert.strictEqual(td.seconds, 24 * 3600 - 1); @@ -238,7 +238,7 @@ QUnit.module('core', function () { QUnit.test('timedelta.test_bool', function (assert) { assert.expect(5); - var c = { td: pyEval.context().datetime.timedelta }; + var c = { td: pyUtils.context().datetime.timedelta }; assert.ok(py.eval('bool(td(1))', c)); assert.ok(py.eval('bool(td(0, 1))', c)); assert.ok(py.eval('bool(td(0, 0, 1))', c)); @@ -249,7 +249,7 @@ QUnit.module('core', function () { QUnit.test('date.test_computations', function (assert) { assert.expect(31); - var d = pyEval.context().datetime; + var d = pyUtils.context().datetime; var a = d.date.fromJSON(2002, 1, 31); var b = d.date.fromJSON(1956, 1, 31); @@ -333,23 +333,23 @@ QUnit.module('core', function () { assert.strictEqual( py.eval("(datetime.date(2012, 2, 15) + relativedelta(days=-1)).strftime('%Y-%m-%d 23:59:59')", - pyEval.context()), + pyUtils.context()), "2012-02-14 23:59:59"); assert.strictEqual( py.eval("(datetime.date(2012, 2, 15) + relativedelta(days=1)).strftime('%Y-%m-%d')", - pyEval.context()), + pyUtils.context()), "2012-02-16"); assert.strictEqual( py.eval("(datetime.date(2012, 2, 15) + relativedelta(days=-1)).strftime('%Y-%m-%d')", - pyEval.context()), + pyUtils.context()), "2012-02-14"); assert.strictEqual( py.eval("(datetime.date(2012, 2, 1) + relativedelta(days=-1)).strftime('%Y-%m-%d')", - pyEval.context()), + pyUtils.context()), '2012-01-31'); assert.strictEqual( py.eval("(datetime.date(2015,2,5)+relativedelta(days=-6,weekday=0)).strftime('%Y-%m-%d')", - pyEval.context()), + pyUtils.context()), '2015-02-02'); }); @@ -358,19 +358,19 @@ QUnit.module('core', function () { assert.expect(4); assert.strictEqual( py.eval("(datetime.datetime(2017, 2, 15, 1, 7, 31) + datetime.timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S')", - pyEval.context()), + pyUtils.context()), "2017-02-16 01:07:31"); assert.strictEqual( py.eval("(datetime.datetime(2012, 2, 15, 1, 7, 31) - datetime.timedelta(hours=1)).strftime('%Y-%m-%d %H:%M:%S')", - pyEval.context()), + pyUtils.context()), "2012-02-15 00:07:31"); assert.strictEqual( py.eval("(datetime.datetime(2012, 2, 15, 1, 7, 31) + datetime.timedelta(hours=-1)).strftime('%Y-%m-%d %H:%M:%S')", - pyEval.context()), + pyUtils.context()), "2012-02-15 00:07:31"); assert.strictEqual( py.eval("(datetime.datetime(2012, 2, 15, 1, 7, 31) + datetime.timedelta(minutes=100)).strftime('%Y-%m-%d %H:%M:%S')", - pyEval.context()), + pyUtils.context()), "2012-02-15 02:47:31"); }); @@ -379,7 +379,7 @@ QUnit.module('core', function () { var result = py.eval( 'datetime.datetime(2012, 2, 15, 1, 7, 31)', - pyEval.context()); + pyUtils.context()); assert.ok(result instanceof Date); assert.strictEqual(result.getFullYear(), 2012); @@ -397,14 +397,14 @@ QUnit.module('core', function () { 'datetime.datetime.combine(datetime.date(2012, 2, 15),' + ' datetime.time(1, 7, 13))' + ' .strftime("%Y-%m-%d %H:%M:%S")', - pyEval.context()); + pyUtils.context()); assert.strictEqual(result, "2012-02-15 01:07:13"); result = py.eval( 'datetime.datetime.combine(datetime.date(2012, 2, 15),' + ' datetime.time())' + ' .strftime("%Y-%m-%d %H:%M:%S")', - pyEval.context()); + pyUtils.context()); assert.strictEqual(result, '2012-02-15 00:00:00'); }); @@ -415,7 +415,7 @@ QUnit.module('core', function () { 'datetime.datetime(2012, 2, 15, 1, 7, 13)' + ' .replace(hour=0, minute=0, second=0)' + ' .strftime("%Y-%m-%d %H:%M:%S")', - pyEval.context()); + pyUtils.context()); assert.strictEqual(result, "2012-02-15 00:00:00"); }); @@ -433,7 +433,7 @@ QUnit.module('core', function () { QUnit.test('empty, basic', function (assert) { assert.expect(3); - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ contexts: [this.user_context], domains: [], }); @@ -480,7 +480,7 @@ QUnit.module('core', function () { }, { "active_id": 9, "active_ids": [ 9 ], "active_model": "mail.compose.message" } ]; - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ contexts: ctx, domins: [], }); @@ -527,7 +527,7 @@ QUnit.module('core', function () { "__eval_context": null, "__ref": "compound_context" }]; - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ contexts: ctx, domains: [], }); @@ -547,7 +547,7 @@ QUnit.module('core', function () { QUnit.test('domain with time', function (assert) { assert.expect(1); - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: [ [['type', '=', 'contract']], ["|", ["state", "in", ["open", "draft"]], [["type", "=", "contract"], ["state", "=", "pending"]]], @@ -581,13 +581,13 @@ QUnit.module('core', function () { __debug: "[('company_id', '=', context.get('company_id',False))]" }; - var result1 = pyEval.eval_domains_and_contexts({ + var result1 = pyUtils.eval_domains_and_contexts({ domains: [d], contexts: [], }); assert.deepEqual(result1.domain, [['company_id', '=', false]]); - var result2 = pyEval.eval_domains_and_contexts({ + var result2 = pyUtils.eval_domains_and_contexts({ domains: [d], contexts: [], eval_context: {company_id: 42}, @@ -602,7 +602,7 @@ QUnit.module('core', function () { var c = "{'default_opportunity_id': active_id, 'default_duration': 1.0, 'lng': lang}"; var cc = new Context(c); cc.set_eval_context({active_id: 42}); - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains:[], contexts: [this.user_context, cc] }); @@ -620,7 +620,7 @@ QUnit.module('core', function () { assert.expect(1); var d = "[('state','!=','cancel'),('opening_date','>',context_today().strftime('%Y-%m-%d'))]"; - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: [d], contexts: [], }); @@ -638,7 +638,7 @@ QUnit.module('core', function () { assert.expect(1); var d = "[('type','=','in'),('day','<=', time.strftime('%Y-%m-%d')),('day','>',(context_today()-datetime.timedelta(days=15)).strftime('%Y-%m-%d'))]"; - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: [d], contexts: [], }); @@ -676,7 +676,7 @@ QUnit.module('core', function () { {"__ref": "context", "__debug": "{'default_ref': 'stock.picking.out,'+str(context.get('active_id', False))}", "__id": "54d6ad1d6c45"} ], "__eval_context": null} ]; - var result = pyEval.eval_domains_and_contexts({ + var result = pyUtils.eval_domains_and_contexts({ domains: [], contexts: cs, }); @@ -706,13 +706,13 @@ QUnit.module('core', function () { __debug: '{"foo": context.get("bar", "qux")}' }]; assert.deepEqual( - pyEval.eval('contexts', context_to_eval, {bar: "ok"}), + pyUtils.eval('contexts', context_to_eval, {bar: "ok"}), {foo: 'ok'}); assert.deepEqual( - pyEval.eval('contexts', context_to_eval, {bar: false}), + pyUtils.eval('contexts', context_to_eval, {bar: false}), {foo: false}); assert.deepEqual( - pyEval.eval('contexts', context_to_eval), + pyUtils.eval('contexts', context_to_eval), {foo: 'qux'}); }); @@ -722,7 +722,7 @@ QUnit.module('core', function () { // Context n should have base evaluation context + all of contexts // 0..n-1 in its own evaluation context var active_id = 4; - var result = pyEval.eval('contexts', [ + var result = pyUtils.eval('contexts', [ { "__contexts": [ { @@ -769,7 +769,7 @@ QUnit.module('core', function () { QUnit.test('non-literal_eval_contexts', function (assert) { assert.expect(1); - var result = pyEval.eval('contexts', [{ + var result = pyUtils.eval('contexts', [{ "__ref": "compound_context", "__contexts": [ {"__ref": "context", "__debug": "{'type':parent.type}", @@ -851,7 +851,7 @@ QUnit.module('core', function () { QUnit.test('return-input-value', function (assert) { assert.expect(1); - var result = pyEval.eval('contexts', [{ + var result = pyUtils.eval('contexts', [{ __ref: 'compound_context', __contexts: ["{'line_id': line_id , 'journal_id': journal_id }"], __eval_context: { @@ -921,9 +921,9 @@ QUnit.module('core', function () { assert.expect(1); var current_date = time.date_to_str(new Date()); - var result = pyEval.eval('domains', + var result = pyUtils.eval('domains', [[],{"__ref":"domain","__debug":"[('name','>=',current_date),('name','<=',current_date)]","__id":"5dedcfc96648"}], - pyEval.context()); + pyUtils.context()); assert.deepEqual(result, [ ['name', '>=', current_date], ['name', '<=', current_date] @@ -938,13 +938,13 @@ QUnit.module('core', function () { __debug: '[("foo", "=", context.get("bar", "qux"))]' }, [['bar', '>=', 42]]]; assert.deepEqual( - pyEval.eval('domains', domains_to_eval, {bar: "ok"}), + pyUtils.eval('domains', domains_to_eval, {bar: "ok"}), [['foo', '=', 'ok'], ['bar', '>=', 42]]); assert.deepEqual( - pyEval.eval('domains', domains_to_eval, {bar: false}), + pyUtils.eval('domains', domains_to_eval, {bar: false}), [['foo', '=', false], ['bar', '>=', 42]]); assert.deepEqual( - pyEval.eval('domains', domains_to_eval), + pyUtils.eval('domains', domains_to_eval), [['foo', '=', 'qux'], ['bar', '>=', 42]]); }); @@ -953,7 +953,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_00', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, {group_by: ['bar', 'qux']}, {group_by: null}, @@ -965,7 +965,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_01', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, { __ref: 'context', __debug: '{"group_by": "bar"}' }, {group_by: 'grault'} @@ -976,7 +976,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_02', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, { __ref: 'compound_context', @@ -991,7 +991,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_03', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, { __ref: 'compound_context', @@ -1008,7 +1008,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_04', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, { __ref: 'compound_context', @@ -1025,7 +1025,7 @@ QUnit.module('core', function () { QUnit.test('groupbys_05', function (assert) { assert.expect(1); - var result = pyEval.eval('groupbys', [ + var result = pyUtils.eval('groupbys', [ {group_by: 'foo'}, { __ref: 'context', __debug: '{"group_by": value}' }, {group_by: 'grault'} diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 5e82766b051..81d8ec91bfd 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -3,7 +3,7 @@ odoo.define('web.MockServer', function (require) { var Class = require('web.Class'); var Domain = require('web.Domain'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var MockServer = Class.extend({ /** @@ -235,7 +235,7 @@ var MockServer = Class.extend({ // 'transfer_node_to_modifiers' simulation var attrs = node.getAttribute('attrs'); if (attrs) { - attrs = pyeval.py_eval(attrs); + attrs = pyUtils.py_eval(attrs); _.extend(modifiers, attrs); } @@ -250,7 +250,7 @@ var MockServer = Class.extend({ var mod = node.getAttribute(a); if (mod) { var pyevalContext = window.py.dict.fromJSON(context || {}); - var v = pyeval.py_eval(mod, {context: pyevalContext}) ? true: false; + var v = pyUtils.py_eval(mod, {context: pyevalContext}) ? true: false; if (inTreeView && a === 'invisible') { modifiers.column_invisible = v; } else if (v || !(a in modifiers) || !_.isArray(modifiers[a])) { diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 4ffdd72b089..035c815ae95 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -9,7 +9,7 @@ var fieldRegistry = require('web.field_registry'); var FormView = require('web.FormView'); var mixins = require('web.mixins'); var NotificationService = require('web.NotificationService'); -var pyeval = require('web.pyeval'); +var pyUtils = require('web.py_utils'); var testUtils = require('web.test_utils'); var widgetRegistry = require('web.widget_registry'); var Widget = require('web.Widget'); @@ -6477,7 +6477,7 @@ QUnit.module('Views', { '', intercepts: { execute_action: function (event) { - var effectDescription = pyeval.py_eval(event.data.action_data.effect); + var effectDescription = pyUtils.py_eval(event.data.action_data.effect); assert.deepEqual(effectDescription, {message: 'Congrats!'}, "should have correct effect description"); } } diff --git a/addons/web/views/webclient_templates.xml b/addons/web/views/webclient_templates.xml index ed40fb36625..ffbbf4ff55e 100644 --- a/addons/web/views/webclient_templates.xml +++ b/addons/web/views/webclient_templates.xml @@ -178,7 +178,7 @@ - + @@ -533,7 +533,7 @@ - +