diff --git a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js
index 64787b84c4c..ec27bc54d2f 100644
--- a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js
+++ b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js
@@ -7,6 +7,7 @@ var relational_fields = require('web.relational_fields');
var basic_fields = require('web.basic_fields');
var core = require('web.core');
var time = require('web.time');
+var session = require('web.session');
var qweb = core.qweb;
var _t = core._t;
@@ -121,12 +122,16 @@ var StatementRenderer = Widget.extend(FieldManagerMixin, {
$done.find('.button_back_to_statement').click(this._onGoToBankStatement.bind(this));
this.$el.children().hide();
// display rainbowman after full reconciliation
- this.trigger_up('show_effect', {
- type: 'rainbow_man',
- fadeout: 'no',
- message: $done,
- });
- this.$el.css('min-height', '450px');
+ if (session.show_effect) {
+ this.trigger_up('show_effect', {
+ type: 'rainbow_man',
+ fadeout: 'no',
+ message: $done,
+ });
+ this.$el.css('min-height', '450px');
+ } else {
+ $done.appendTo(this.$el);
+ }
}
if (state.notifications) {
diff --git a/addons/base_setup/__manifest__.py b/addons/base_setup/__manifest__.py
index cbd4a0d5323..df9fb1ec1a8 100644
--- a/addons/base_setup/__manifest__.py
+++ b/addons/base_setup/__manifest__.py
@@ -13,6 +13,7 @@ Shows you a list of applications features to install from.
""",
'depends': ['base', 'web'],
'data': [
+ 'data/base_setup_data.xml',
'views/res_config_settings_views.xml',
'views/res_partner_views.xml',
],
diff --git a/addons/base_setup/data/base_setup_data.xml b/addons/base_setup/data/base_setup_data.xml
new file mode 100644
index 00000000000..6499d00add4
--- /dev/null
+++ b/addons/base_setup/data/base_setup_data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+ base_setup.show_effect
+ True
+
+
+
diff --git a/addons/base_setup/models/__init__.py b/addons/base_setup/models/__init__.py
index 9fdfb603d9f..ecb5f3ba7ea 100644
--- a/addons/base_setup/models/__init__.py
+++ b/addons/base_setup/models/__init__.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from . import ir_http
from . import res_config_settings
diff --git a/addons/base_setup/models/ir_http.py b/addons/base_setup/models/ir_http.py
new file mode 100644
index 00000000000..f65384adfc1
--- /dev/null
+++ b/addons/base_setup/models/ir_http.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from odoo import models
+from odoo.http import request
+
+
+class IrHttp(models.AbstractModel):
+ _inherit = 'ir.http'
+
+ def session_info(self):
+ result = super(IrHttp, self).session_info()
+ result['show_effect'] = request.env['ir.config_parameter'].sudo().get_param('base_setup.show_effect')
+ return result
diff --git a/addons/base_setup/models/res_config_settings.py b/addons/base_setup/models/res_config_settings.py
index a781a314686..21d2087d12a 100644
--- a/addons/base_setup/models/res_config_settings.py
+++ b/addons/base_setup/models/res_config_settings.py
@@ -40,6 +40,7 @@ class ResConfigSettings(models.TransientModel):
help="Allows to work in a multi currency environment")
paperformat_id = fields.Many2one(related="company_id.paperformat_id", string='Paper format')
external_report_layout = fields.Selection(related="company_id.external_report_layout")
+ show_effect = fields.Boolean(string="Show Effect", config_parameter='base_setup.show_effect')
@api.model
def get_values(self):
diff --git a/addons/base_setup/views/res_config_settings_views.xml b/addons/base_setup/views/res_config_settings_views.xml
index aaa5be112c1..99d43c9c18e 100644
--- a/addons/base_setup/views/res_config_settings_views.xml
+++ b/addons/base_setup/views/res_config_settings_views.xml
@@ -78,6 +78,17 @@
+
+
+
+
+
+
+
+ Add fun feedback and motivate your employees
+
+
+
diff --git a/addons/web/models/ir_http.py b/addons/web/models/ir_http.py
index bbe793812b9..527dfeef0fe 100644
--- a/addons/web/models/ir_http.py
+++ b/addons/web/models/ir_http.py
@@ -39,6 +39,7 @@ class Http(models.AbstractModel):
"user_companies": {'current_company': (user.company_id.id, user.company_id.name), 'allowed_companies': [(comp.id, comp.name) for comp in user.company_ids]} if display_switch_company_menu else False,
"currencies": self.get_currencies(),
"web.base.url": self.env['ir.config_parameter'].sudo().get_param('web.base.url', default=''),
+ "show_effect": True
}
def get_currencies(self):
diff --git a/addons/web/static/src/js/chrome/abstract_web_client.js b/addons/web/static/src/js/chrome/abstract_web_client.js
index 612d04c577a..7d3f19c1639 100644
--- a/addons/web/static/src/js/chrome/abstract_web_client.js
+++ b/addons/web/static/src/js/chrome/abstract_web_client.js
@@ -437,7 +437,12 @@ var AbstractWebClient = Widget.extend(ServiceProviderMixin, KeyboardNavigationMi
var data = e.data || {};
var type = data.type || 'rainbow_man';
if (type === 'rainbow_man') {
- new RainbowMan(data).appendTo(this.$el);
+ if (session.show_effect) {
+ new RainbowMan(data).appendTo(this.$el);
+ } else {
+ // For instance keep title blank, as we don't have title in data
+ this.notification_manager.notify('', data.message, true);
+ }
} else {
throw new Error('Unknown effect type: ' + type);
}