From 8577db7e3f5b958cca2ba61fbcf053833fca6ef9 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Mon, 17 Feb 2020 09:13:11 +0100 Subject: [PATCH] [ADD] web_environment_ribbon: Allow to generate ribbon name with code --- .../models/web_environment_ribbon_backend.py | 27 ++++++++++++------- web_environment_ribbon/readme/CONFIGURE.rst | 3 +++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/web_environment_ribbon/models/web_environment_ribbon_backend.py b/web_environment_ribbon/models/web_environment_ribbon_backend.py index 5932d7b32..96e7b15cd 100644 --- a/web_environment_ribbon/models/web_environment_ribbon_backend.py +++ b/web_environment_ribbon/models/web_environment_ribbon_backend.py @@ -2,6 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models +from odoo.tools.safe_eval import safe_eval class WebEnvironmentRibbonBackend(models.AbstractModel): @@ -14,10 +15,20 @@ class WebEnvironmentRibbonBackend(models.AbstractModel): return {"db_name": self.env.cr.dbname} @api.model - def _prepare_ribbon_name(self): - name_tmpl = self.env["ir.config_parameter"].sudo().get_param("ribbon.name") + def _prepare_ribbon_eval_environment(self): + return {"env": self.env} + + @api.model + def _get_ribbon_value(self, name): + ir_config_model = self.env["ir.config_parameter"].sudo() + code = ir_config_model.get_param("ribbon.%s.code" % name) + if code: + return safe_eval( + code, globals_dict=self._prepare_ribbon_eval_environment(), + ) + value_tmpl = ir_config_model.get_param("ribbon.%s" % name) vals = self._prepare_ribbon_format_vals() - return name_tmpl and name_tmpl.format(**vals) or name_tmpl + return value_tmpl and value_tmpl.format(**vals) or value_tmpl @api.model def get_environment_ribbon(self): @@ -25,12 +36,8 @@ class WebEnvironmentRibbonBackend(models.AbstractModel): This method returns the ribbon data from ir config parameters :return: dictionary """ - ir_config_model = self.env["ir.config_parameter"] - name = self._prepare_ribbon_name() return { - "name": name, - "color": ir_config_model.sudo().get_param("ribbon.color"), - "background_color": ir_config_model.sudo().get_param( - "ribbon.background.color" - ), + "name": self._get_ribbon_value("name"), + "color": self._get_ribbon_value("color"), + "background_color": self._get_ribbon_value("background.color"), } diff --git a/web_environment_ribbon/readme/CONFIGURE.rst b/web_environment_ribbon/readme/CONFIGURE.rst index 8542c72e4..aee10b0e1 100644 --- a/web_environment_ribbon/readme/CONFIGURE.rst +++ b/web_environment_ribbon/readme/CONFIGURE.rst @@ -6,3 +6,6 @@ colors or just set to "False" to use default values. * You can add the database name in the ribbon by adding "{db_name}" in the system parameter "ribbon.name". +* By appending ".code", you can fill in a Python expression to generate the + ribbon name or colors: "ribbon.name.code" could contain "env.cr.dbname", + which just returns the current database's name.