[ADD] web_environment_ribbon: Allow to generate ribbon name with code

pull/1521/head
Holger Brunn 2020-02-17 09:13:11 +01:00
parent 76d32c5afa
commit 8577db7e3f
No known key found for this signature in database
GPG Key ID: 5306CE414AFC231E
2 changed files with 20 additions and 10 deletions

View File

@ -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"),
}

View File

@ -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.