[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). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, models from odoo import api, models
from odoo.tools.safe_eval import safe_eval
class WebEnvironmentRibbonBackend(models.AbstractModel): class WebEnvironmentRibbonBackend(models.AbstractModel):
@ -14,10 +15,20 @@ class WebEnvironmentRibbonBackend(models.AbstractModel):
return {"db_name": self.env.cr.dbname} return {"db_name": self.env.cr.dbname}
@api.model @api.model
def _prepare_ribbon_name(self): def _prepare_ribbon_eval_environment(self):
name_tmpl = self.env["ir.config_parameter"].sudo().get_param("ribbon.name") 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() 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 @api.model
def get_environment_ribbon(self): def get_environment_ribbon(self):
@ -25,12 +36,8 @@ class WebEnvironmentRibbonBackend(models.AbstractModel):
This method returns the ribbon data from ir config parameters This method returns the ribbon data from ir config parameters
:return: dictionary :return: dictionary
""" """
ir_config_model = self.env["ir.config_parameter"]
name = self._prepare_ribbon_name()
return { return {
"name": name, "name": self._get_ribbon_value("name"),
"color": ir_config_model.sudo().get_param("ribbon.color"), "color": self._get_ribbon_value("color"),
"background_color": ir_config_model.sudo().get_param( "background_color": self._get_ribbon_value("background.color"),
"ribbon.background.color"
),
} }

View File

@ -6,3 +6,6 @@
colors or just set to "False" to use default values. 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 * You can add the database name in the ribbon by adding "{db_name}" in the
system parameter "ribbon.name". 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.