[REF] *: rename web.pyeval into web.py_utils

The pyeval name is quite confusing, given that there is already an eval
and an evaluate function in py.js, and that the web.pyeval exports two
evaluate functions.

Since this file is more about odoo specific customization to py.js, it
is renamed in py_utils to better express its intended use.
This commit is contained in:
Géry Debongnie
2018-07-06 14:09:09 +02:00
committed by Adrien Dieudonne
parent dcc4d71623
commit eed4d586a0
22 changed files with 110 additions and 110 deletions
+3 -3
View File
@@ -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];
@@ -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) {
+2 -2
View File
@@ -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],
});
@@ -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)
});
+8 -8
View File
@@ -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<Array<openerp.web.QueryGroup>> | 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,
@@ -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);
@@ -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) {
+2 -2
View File
@@ -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: {
+2 -2
View File
@@ -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.
+2 -2
View File
@@ -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
@@ -1,4 +1,4 @@
odoo.define('web.pyeval', function (require) {
odoo.define('web.py_utils', function (require) {
"use strict";
var core = require('web.core');
@@ -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) {
@@ -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 || []
@@ -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 || [],
@@ -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);
}
@@ -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];
@@ -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 || [],
@@ -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,
@@ -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'}
@@ -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])) {
+2 -2
View File
@@ -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', {
'</form>',
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");
}
}
+2 -2
View File
@@ -178,7 +178,7 @@
<script type="text/javascript" src="/web/static/lib/jquery.ba-bbq/jquery.ba-bbq.js"></script>
<script type="text/javascript" src="/web/static/src/js/core/domain.js"></script>
<script type="text/javascript" src="/web/static/src/js/core/pyeval.js"></script>
<script type="text/javascript" src="/web/static/src/js/core/py_utils.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome/abstract_action.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome/action_manager.js"></script>
<script type="text/javascript" src="/web/static/src/js/chrome/action_manager_act_window.js"></script>
@@ -533,7 +533,7 @@
<script type="text/javascript" src="/web/static/tests/widgets/dropdown_menu_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/views/search_view_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/registry_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/pyeval_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/py_utils_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/class_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/rpc_tests.js"></script>
<script type="text/javascript" src="/web/static/tests/core/domain_tests.js"></script>