[IMP] *: use new helper config.isDebug()

Before this commit, both config and session were aliases to odoo.debug.
Now, config.isDebug() should be call, with possibility to pass a parameter to
check if we are in a specific debug mode such as 'tests' or 'assets'.

task-1934445
Coming with https://github.com/odoo/enterprise/pull/4281
Closes https://github.com/odoo/odoo/pull/33213
This commit is contained in:
Romain Derie
2019-06-05 05:56:33 +00:00
committed by Jeremy Kersten
parent 73327db065
commit 72f7139f52
30 changed files with 70 additions and 63 deletions
@@ -2,6 +2,7 @@ odoo.define('base_import.import', function (require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var config = require('web.config');
var core = require('web.core');
var session = require('web.session');
var time = require('web.time');
@@ -414,7 +415,7 @@ var DataImport = AbstractAction.extend({
var $thing = $();
var bind = function (d) {};
if (session.debug) {
if (config.isDebug()) {
$thing = $(QWeb.render('ImportView.create_record_option')).insertAfter(v).hide();
bind = function (data) {
switch (data.type) {
+1 -2
View File
@@ -10,7 +10,6 @@ var config = require('web.config');
var core = require('web.core');
var Dialog = require('web.Dialog');
var dom = require('web.dom');
var session = require('web.session');
var QWeb = core.qweb;
var _t = core._t;
@@ -731,7 +730,7 @@ var Discuss = AbstractAction.extend({
* @private
*/
_renderButtons: function () {
this.$buttons = $(QWeb.render('mail.discuss.ControlButtons', { debug: session.debug }));
this.$buttons = $(QWeb.render('mail.discuss.ControlButtons', { debug: config.isDebug() }));
this.$buttons.find('button').css({display:'inline-block'});
this.$buttons
.on('click', '.o_mail_discuss_button_invite', this._onInviteButtonClicked.bind(this))
@@ -3,6 +3,7 @@ odoo.define('mail.ActivityRenderer', function (require) {
var AbstractRenderer = require('web.AbstractRenderer');
var ActivityRecord = require('mail.ActivityRecord');
var config = require('web.config');
var core = require('web.core');
var field_registry = require('web.field_registry');
var KanbanColumnProgressBar = require('web.KanbanColumnProgressBar');
@@ -32,7 +33,7 @@ var ActivityRenderer = AbstractRenderer.extend({
init: function (parent, state, params) {
this._super.apply(this, arguments);
this.qweb = new qweb(session.debug, {_s: session.origin});
this.qweb = new qweb(config.isDebug(), {_s: session.origin});
this.qweb.add_template(utils.json_node_to_xml(params.templates));
},
+2 -2
View File
@@ -45,7 +45,7 @@ exports.PosModel = Backbone.Model.extend({
this.proxy_queue = new devices.JobQueue(); // used to prevent parallels communications to the proxy
this.db = new PosDB(); // a local database used to search trough products and categories & store pending orders
this.debug = config.debug; //debug mode
this.debug = config.isDebug(); //debug mode
// Business data; loaded from the server at launch
this.company_logo = null;
@@ -2251,7 +2251,7 @@ exports.Order = Backbone.Model.extend({
} else {
subreceipt = subreceipt.split('\n').slice(1).join('\n');
var qweb = new QWeb2.Engine();
qweb.debug = config.debug;
qweb.debug = config.isDebug();
qweb.default_dict = _.clone(QWeb.default_dict);
qweb.add_template('<templates><t t-name="subreceipt">'+subreceipt+'</t></templates>');
+3 -2
View File
@@ -2,6 +2,7 @@ odoo.define('web.Apps', function (require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var config = require('web.config');
var core = require('web.core');
var framework = require('web.framework');
var session = require('web.session');
@@ -111,8 +112,8 @@ var Apps = AbstractAction.extend({
self.client = client;
var qs = {db: client.dbname};
if (session.debug) {
qs.debug = session.debug;
if (config.isDebug()) {
qs.debug = odoo.debug;
}
var u = $.param.querystring(client.origin + "/apps/embed/client", qs);
var css = {width: '100%', height: '750px'};
@@ -358,7 +358,7 @@ ActionManager.include({
viewID: view[0],
Widget: View,
});
} else if (config.debug === 'assets') {
} else if (config.isDebug('assets')) {
console.error("View type '" + viewType + "' is not present in the view registry.");
}
});
+2 -2
View File
@@ -12,9 +12,9 @@ odoo.define('web.Loading', function (require) {
* After a delay of 3s, if a rpc is still not completed, we also block the UI.
*/
var config = require('web.config');
var core = require('web.core');
var framework = require('web.framework');
var session = require('web.session');
var Widget = require('web.Widget');
var _t = core._t;
@@ -54,7 +54,7 @@ var Loading = Widget.extend({
this.count += increment;
if (this.count > 0) {
if (session.debug) {
if (config.isDebug()) {
this.$el.text(_.str.sprintf( _t("Loading (%d)"), this.count));
} else {
this.$el.text(_t("Loading"));
+2 -1
View File
@@ -9,6 +9,7 @@ odoo.define('web.UserMenu', function (require) {
* editing its preferences, accessing the documentation, logging out...
*/
var config = require('web.config');
var core = require('web.core');
var framework = require('web.framework');
var Dialog = require('web.Dialog');
@@ -39,7 +40,7 @@ var UserMenu = Widget.extend({
return Promise.resolve();
}
var topbar_name = session.name;
if (session.debug) {
if (config.isDebug()) {
topbar_name = _.str.sprintf("%s (%s)", topbar_name, session.db);
}
self.$('.oe_topbar_name').text(topbar_name);
+1 -1
View File
@@ -435,7 +435,7 @@ var loadAsset = (function () {
}
var params = {
args: [xmlId, {
debug: config.debug
debug: config.isDebug()
}],
kwargs: {
context: odoo.session_info.user_context,
-2
View File
@@ -3,7 +3,6 @@ odoo.define('web.Session', function (require) {
var ajax = require('web.ajax');
var concurrency = require('web.concurrency');
var config = require('web.config');
var core = require('web.core');
var local_storage = require('web.local_storage');
var mixins = require('web.mixins');
@@ -35,7 +34,6 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, {
this.avoid_recursion = false;
this.use_cors = options.use_cors || false;
this.setup(origin);
this.debug = config.debug;
// for historic reasons, the session requires a name to properly work
// (see the methods get_cookie and set_cookie). We should perhaps
@@ -8,6 +8,7 @@ odoo.define('web.basic_fields', function (require) {
*/
var AbstractField = require('web.AbstractField');
var config = require('web.config');
var core = require('web.core');
var crash_manager = require('web.crash_manager');
var datepicker = require('web.datepicker');
@@ -2770,7 +2771,7 @@ var FieldDomain = AbstractField.extend({
this.domainSelector = new DomainSelector(this, this._domainModel, value, {
readonly: this.mode === "readonly" || this.inDialog,
filters: this.fsFilters,
debugMode: session.debug,
debugMode: config.isDebug(),
});
def = this.domainSelector.prependTo(this.$el);
} else {
@@ -2859,7 +2860,7 @@ var FieldDomain = AbstractField.extend({
new DomainSelectorDialog(this, this._domainModel, this.value || "[]", {
readonly: this.mode === "readonly",
filters: this.fsFilters,
debugMode: session.debug,
debugMode: config.isDebug(),
}).open();
},
/**
+12 -6
View File
@@ -11,12 +11,6 @@ odoo.define('web.config', function () {
*/
var config = {
/**
* debug can be either a boolean, or the special value 'assets'
*
* @type boolean|string
*/
debug: odoo.debug,
device: {
/**
* touch is a boolean, true if the device supports touch interaction
@@ -45,6 +39,18 @@ var config = {
*/
SIZES: { XS: 0, VSM: 1, SM: 2, MD: 3, LG: 4, XL: 5, XXL: 6 },
},
/**
* States whether the current environment is in debug or not.
*
* @param debugMode the debug mode to check, empty for simple debug mode
* @returns {boolean}
*/
isDebug: function (debugMode) {
if (debugMode) {
return odoo.debug && odoo.debug.indexOf(debugMode) !== -1;
}
return odoo.debug;
},
};
+2 -2
View File
@@ -2,8 +2,8 @@ odoo.define('web.core', function (require) {
"use strict";
var Bus = require('web.Bus');
var Class = require('web.Class');
var config = require('web.config');
var Class = require('web.Class');
var QWeb = require('web.QWeb');
var Registry = require('web.Registry');
var translation = require('web.translation');
@@ -27,7 +27,7 @@ _.each('resize,scroll'.split(','), function (evtype) {
});
return {
qweb: new QWeb(config.debug),
qweb: new QWeb(config.isDebug()),
// core classes and functions
Class: Class,
@@ -42,7 +42,7 @@ return core.Class.extend({
var self = this;
var key = this._gen_key(action_id, additional_context || {});
if (config.debug === 'assets' || !this._cache.actions[key]) {
if (config.isDebug('assets') || !this._cache.actions[key]) {
this._cache.actions[key] = rpc.query({
route: "/web/action/load",
params: {
@@ -82,7 +82,7 @@ return core.Class.extend({
var views_descr = params.views_descr;
var key = this._gen_key(model, views_descr, options || {}, context);
if (config.debug === 'assets' || !this._cache.views[key]) {
if (config.isDebug('assets') || !this._cache.views[key]) {
// Don't load filters if already in cache
var filters_key;
if (options.load_filters) {
@@ -137,7 +137,7 @@ return core.Class.extend({
*/
load_filters: function (params) {
var key = this._gen_key(params.modelName, params.actionId);
if (config.debug === 'assets' || !this._cache.filters[key]) {
if (config.isDebug('assets') || !this._cache.filters[key]) {
this._cache.filters[key] = rpc.query({
args: [params.modelName, params.actionId],
kwargs: {
@@ -677,7 +677,7 @@ var RequestDetails = Widget.extend({
}
});
if (config.debug) {
if (config.isDebug()) {
SystrayMenu.Items.push(DebugManager);
WebClient.include({
@@ -235,7 +235,7 @@ var BasicRenderer = AbstractRenderer.extend({
$node.tooltip({
title: function () {
return qweb.render('WidgetLabel.tooltip', {
debug: config.debug,
debug: config.isDebug(),
widget: widget,
});
}
@@ -187,7 +187,7 @@ return AbstractRenderer.extend({
this.color_map = {};
if (params.eventTemplate) {
this.qweb = new QWeb(session.debug, {_s: session.origin});
this.qweb = new QWeb(config.isDebug(), {_s: session.origin});
this.qweb.add_template(utils.json_node_to_xml(params.eventTemplate));
}
},
@@ -310,7 +310,7 @@ var FormRenderer = BasicRenderer.extend({
$button.tooltip({
title: function () {
return qweb.render('WidgetButton.tooltip', {
debug: config.debug,
debug: config.isDebug(),
state: self.state,
node: node,
});
@@ -491,7 +491,7 @@ var FormRenderer = BasicRenderer.extend({
this._registerModifiers(node, this.state, $button);
// Display tooltip
if (config.debug || node.attrs.help) {
if (config.isDebug() || node.attrs.help) {
this._addButtonTooltip(node, $button);
}
return $button;
@@ -727,7 +727,7 @@ var FormRenderer = BasicRenderer.extend({
this._registerModifiers(node, this.state, $button);
// Display tooltip
if (config.debug || node.attrs.help) {
if (config.isDebug() || node.attrs.help) {
this._addButtonTooltip(node, $button);
}
@@ -998,7 +998,7 @@ var FormRenderer = BasicRenderer.extend({
var $widgets = self.$('.o_field_widget[name=' + widget.name + ']');
var $label = idForLabel ? self.$('.o_form_label[for=' + idForLabel + ']') : $();
$label = $label.eq($widgets.index(widget.$el));
if (config.debug || widget.attrs.help || widget.field.help) {
if (config.isDebug() || widget.attrs.help || widget.field.help) {
self._addFieldTooltip(widget, $label);
}
if (widget.attrs.widget === 'upgrade_boolean') {
@@ -245,7 +245,7 @@ var KanbanRecord = Widget.extend({
if (Widget) {
widget = self._processWidget($field, field_name, Widget);
self.subWidgets[field_name] = widget;
} else if (config.debug) {
} else if (config.isDebug()) {
// the widget is not implemented
$field.replaceWith($('<span>', {
text: _.str.sprintf(_t('[No widget %s]'), field_widget),
@@ -3,6 +3,7 @@ odoo.define('web.KanbanRenderer', function (require) {
var BasicRenderer = require('web.BasicRenderer');
var ColumnQuickCreate = require('web.kanban_column_quick_create');
var config = require('web.config');
var core = require('web.core');
var KanbanColumn = require('web.KanbanColumn');
var KanbanRecord = require('web.KanbanRecord');
@@ -107,7 +108,7 @@ var KanbanRenderer = BasicRenderer.extend({
this._super.apply(this, arguments);
this.widgets = [];
this.qweb = new QWeb(session.debug, {_s: session.origin}, false);
this.qweb = new QWeb(config.isDebug(), {_s: session.origin}, false);
var templates = findInNode(this.arch, function (n) { return n.tag === 'templates';});
transformQwebTemplate(templates, state.fields);
this.qweb.add_template(utils.json_node_to_xml(templates));
@@ -309,7 +309,7 @@ var ListRenderer = BasicRenderer.extend({
return _.map(this.columns, function (column) {
var $cell = $('<td>');
if (config.debug) {
if (config.isDebug()) {
$cell.addClass(column.attrs.name);
}
if (column.attrs.name in aggregateValues) {
@@ -742,7 +742,7 @@ var ListRenderer = BasicRenderer.extend({
$th.css({ textAlign: 'right' });
}
if (config.debug) {
if (config.isDebug()) {
var fieldDescr = {
field: field,
name: name,
@@ -1,6 +1,7 @@
odoo.define('web.DataExport', function (require) {
"use strict";
var config = require('web.config');
var core = require('web.core');
var crash_manager = require('web.crash_manager');
var Dialog = require('web.Dialog');
@@ -240,11 +241,11 @@ var DataExport = Dialog.extend({
.find('.o_expand_parent')
.toggleClass('fa-chevron-right fa-chevron-down')
.next()
.after(QWeb.render('Export.TreeItems', {fields: records, debug: this.getSession().debug}));
.after(QWeb.render('Export.TreeItems', {fields: records, debug: config.isDebug()}));
} else {
this.$('.o_left_field_panel').empty().append(
$('<div/>').addClass('o_field_tree_structure')
.append(QWeb.render('Export.TreeItems', {fields: records, debug: this.getSession().debug}))
.append(QWeb.render('Export.TreeItems', {fields: records, debug: config.isDebug()}))
);
}
@@ -173,7 +173,7 @@ function addMockEnvironment(widget, params) {
_.extend(config.device, params.config.device);
}
if ('debug' in params.config) {
config.debug = params.config.debug;
odoo.debug = params.config.debug;
}
}
if ('translateParameters' in params) {
+6 -7
View File
@@ -3,7 +3,6 @@ odoo.define('web.form_tests', function (require) {
var BasicModel = require('web.BasicModel');
var concurrency = require('web.concurrency');
var config = require('web.config');
var core = require('web.core');
var fieldRegistry = require('web.field_registry');
var FormView = require('web.FormView');
@@ -6576,8 +6575,8 @@ QUnit.module('Views', {
QUnit.test('display tooltips for buttons', async function (assert) {
assert.expect(2);
var initialDebugMode = config.debug;
config.debug = true;
var initialDebugMode = odoo.debug;
odoo.debug = true;
var form = await createView({
View: FormView,
@@ -6607,7 +6606,7 @@ QUnit.module('Views', {
"should have rendered a tooltip");
$secondButton.trigger($.Event('mouseleave'));
config.debug = initialDebugMode;
odoo.debug = initialDebugMode;
form.destroy();
});
@@ -6936,8 +6935,8 @@ QUnit.module('Views', {
QUnit.test('proper stringification in debug mode tooltip', async function (assert) {
assert.expect(6);
var initialDebugMode = config.debug;
config.debug = true;
var initialDebugMode = odoo.debug;
odoo.debug = true;
var form = await createView({
View: FormView,
@@ -6970,7 +6969,7 @@ QUnit.module('Views', {
assert.strictEqual($('.oe_tooltip_technical>li[data-item="widget"]')[0].lastChild.wholeText.trim(),
'Many2one (many2one)', "widget description should be correct");
config.debug = initialDebugMode;
odoo.debug = initialDebugMode;
form.destroy();
});
+4 -5
View File
@@ -3,7 +3,6 @@ odoo.define('web.list_tests', function (require) {
var AbstractStorageService = require('web.AbstractStorageService');
var BasicModel = require('web.BasicModel');
var config = require('web.config');
var core = require('web.core');
var basicFields = require('web.basic_fields');
var FormView = require('web.FormView');
@@ -1793,8 +1792,8 @@ QUnit.module('Views', {
QUnit.test('display a tooltip on a field', async function (assert) {
assert.expect(4);
var initialDebugMode = config.debug;
config.debug = false;
var initialDebugMode = odoo.debug;
odoo.debug = false;
var list = await createView({
View: ListView,
@@ -1813,7 +1812,7 @@ QUnit.module('Views', {
list.$('th[data-name=foo]').trigger($.Event('mouseenter'));
assert.strictEqual($('.tooltip .oe_tooltip_string').length, 0, "should not have rendered a tooltip");
config.debug = true;
odoo.debug = true;
// it is necessary to rerender the list so tooltips can be properly created
await list.reload();
list.$('th[data-name=foo]').tooltip('show', false);
@@ -1828,7 +1827,7 @@ QUnit.module('Views', {
assert.strictEqual($('.oe_tooltip_technical>li[data-item="widget"]')[0].lastChild.wholeText.trim(),
'Button (toggle_button)', "widget description should be correct");
config.debug = initialDebugMode;
odoo.debug = initialDebugMode;
list.destroy();
});
@@ -2,12 +2,12 @@ odoo.define('web_editor.ace', function (require) {
'use strict';
var ajax = require('web.ajax');
var config = require('web.config');
var concurrency = require('web.concurrency');
var core = require('web.core');
var Dialog = require('web.Dialog');
var Widget = require('web.Widget');
var localStorage = require('web.local_storage');
var session = require('web.session');
var _t = core._t;
@@ -716,8 +716,8 @@ var ViewEditor = Widget.extend({
_.each(this.$lists, function ($list, _type) { $list.toggleClass('d-none', type !== _type); });
this.$lists[type].change();
this.$includeBundlesArea.toggleClass('d-none', this.currentType !== 'xml' || !session.debug);
this.$includeAllSCSSArea.toggleClass('d-none', this.currentType !== 'scss' || !session.debug);
this.$includeBundlesArea.toggleClass('d-none', this.currentType !== 'xml' || !config.isDebug());
this.$includeAllSCSSArea.toggleClass('d-none', this.currentType !== 'scss' || !config.isDebug());
this.$includeAllSCSSArea.find('[data-value="restricted"]').toggleClass('d-none', this.options.defaultBundlesRestriction.length === 0);
this.$formatButton.toggleClass('d-none', this.currentType !== 'xml');
},
@@ -824,7 +824,7 @@ var ViewEditor = Widget.extend({
}));
}
if (!isSelected && session.debug && $elem.data('debug')) {
if (!isSelected && config.isDebug() && $elem.data('debug')) {
$div.append($('<span/>', {
text: ' (' + $elem.data('debug') + ')',
class: 'ml4 small text-muted',
@@ -19,7 +19,7 @@ var Wysiwyg = Widget.extend({
wysiwyg_blur: '_onWysiwygBlur',
},
defaultOptions: {
codeview: config.debug,
codeview: config.isDebug(),
recordInfo: {
context: {},
},
@@ -2,7 +2,6 @@ odoo.define('web_settings_dashboard', function (require) {
"use strict";
var AbstractAction = require('web.AbstractAction');
var config = require('web.config');
var core = require('web.core');
var framework = require('web.framework');
var Widget = require('web.Widget');
@@ -349,7 +348,6 @@ var DashboardShare = Widget.extend({
_onClickForceDemo: function (ev) {
ev.preventDefault();
this.do_action('base.demo_force_install_action');
config.debug = false;
},
});
@@ -1,6 +1,7 @@
odoo.define('website.debugManager', function (require) {
'use strict';
var config = require('web.config');
var DebugManager = require('web.DebugManager');
var websiteNavbarData = require('website.navbar');
@@ -9,7 +10,7 @@ var DebugManagerMenu = websiteNavbarData.WebsiteNavbar.include({
* @override
*/
start: function () {
if (odoo.debug) {
if (config.isDebug()) {
new DebugManager(this).prependTo(this.$('.o_menu_systray'));
}
return this._super.apply(this, arguments);
@@ -592,7 +592,7 @@ var ThemeCustomizeDialog = Dialog.extend({
var $loading = $('<i/>', {class: 'fa fa-refresh fa-spin'});
this.$modal.find('.modal-title').append($loading);
if (reload || config.debug === 'assets') {
if (reload || config.isDebug('assets')) {
window.location.href = $.param.querystring('/website/theme_customize_reload', {
href: window.location.href,
enable: (enable || []).join(','),