[12.0][IMP] kpi_dashboard: Allow to use formula

This commit is contained in:
Enric Tobella
2020-04-28 15:04:03 +02:00
parent 5b3aeed911
commit 3ca213d3e0
5 changed files with 55 additions and 2 deletions

View File

@@ -3,6 +3,7 @@
from odoo import api, fields, models
import ast
from odoo.tools.safe_eval import safe_eval
class KpiKpi(models.Model):
@@ -13,7 +14,7 @@ class KpiKpi(models.Model):
active = fields.Boolean(default=True)
cron_id = fields.Many2one("ir.cron", readonly=True, copy=False)
computation_method = fields.Selection(
[("function", "Function")], required=True
[("function", "Function"), ("code", "Code")], required=True
)
value = fields.Serialized()
dashboard_item_ids = fields.One2many("kpi.dashboard.item", inverse_name="kpi_id")
@@ -34,6 +35,7 @@ class KpiKpi(models.Model):
inverse_name='kpi_id',
help="Actions that can be opened from the KPI"
)
code = fields.Text("Code")
def _cron_vals(self):
return {
@@ -84,6 +86,17 @@ class KpiKpi(models.Model):
vals["value_last_update"] = fields.Datetime.now()
return super().write(vals)
def _get_code_input_dict(self):
return {
"self": self,
"model": self,
}
def _compute_value_code(self):
results = self._get_code_input_dict()
safe_eval(self.code or "", results, mode="exec", nocopy=True)
return results.get("result", {})
class KpiKpiAction(models.Model):
_name = 'kpi.kpi.action'