diff --git a/kpi_dashboard/__manifest__.py b/kpi_dashboard/__manifest__.py index 9f7567af5..c63125a63 100644 --- a/kpi_dashboard/__manifest__.py +++ b/kpi_dashboard/__manifest__.py @@ -5,7 +5,7 @@ "name": "Kpi Dashboard", "summary": """ Create Dashboards using kpis""", - "version": "14.0.1.0.0", + "version": "14.0.1.1.0", "license": "AGPL-3", "author": "Creu Blanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/reporting-engine", diff --git a/kpi_dashboard/i18n/kpi_dashboard.pot b/kpi_dashboard/i18n/kpi_dashboard.pot index 561120e7b..19ce95376 100644 --- a/kpi_dashboard/i18n/kpi_dashboard.pot +++ b/kpi_dashboard/i18n/kpi_dashboard.pot @@ -99,6 +99,7 @@ msgid "Computation Method" msgstr "" #. module: kpi_dashboard +#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__compute_on_fly #: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_kpi__compute_on_fly msgid "Compute On Fly" msgstr "" @@ -549,6 +550,11 @@ msgstr "" msgid "Size Y of the widget cannot be bigger than 10" msgstr "" +#. module: kpi_dashboard +#: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_dashboard_item__special_context +msgid "Special Context" +msgstr "" + #. module: kpi_dashboard #: model:ir.model.fields,field_description:kpi_dashboard.field_kpi_kpi__store_history msgid "Store History" diff --git a/kpi_dashboard/models/kpi_dashboard.py b/kpi_dashboard/models/kpi_dashboard.py index 20642ed39..0af044470 100644 --- a/kpi_dashboard/models/kpi_dashboard.py +++ b/kpi_dashboard/models/kpi_dashboard.py @@ -3,6 +3,7 @@ from odoo import _, api, fields, models from odoo.exceptions import ValidationError +from odoo.tools.safe_eval import safe_eval class KpiDashboard(models.Model): @@ -119,9 +120,11 @@ class KpiDashboardItem(models.Model): color = fields.Char() font_color = fields.Char() modify_context = fields.Boolean() + compute_on_fly = fields.Boolean(related="kpi_id.compute_on_fly") modify_context_expression = fields.Char() modify_color = fields.Boolean() modify_color_expression = fields.Char() + special_context = fields.Char() @api.depends("row", "size_y") def _compute_end_row(self): @@ -195,9 +198,17 @@ class KpiDashboardItem(models.Model): } ) if self.kpi_id.compute_on_fly: + kpi = self.kpi_id + if self.special_context: + try: + ctx = safe_eval(self.special_context) + if isinstance(ctx, dict): + kpi = kpi.with_context(**ctx) + except SyntaxError: + pass vals.update( { - "value": self.kpi_id._compute_value(), + "value": kpi._compute_value(), "value_last_update": fields.Datetime.now(), } ) diff --git a/kpi_dashboard/views/kpi_dashboard.xml b/kpi_dashboard/views/kpi_dashboard.xml index e919d3d9c..06f7f1c37 100644 --- a/kpi_dashboard/views/kpi_dashboard.xml +++ b/kpi_dashboard/views/kpi_dashboard.xml @@ -162,15 +162,15 @@ widget="ace" options="{'mode': 'python'}" /> + +