Merge PR #575 into 13.0

Signed-off-by etobella
pull/621/head
OCA-git-bot 2022-04-25 07:24:03 +00:00
commit a0cb94c5e3
2 changed files with 19 additions and 7 deletions

View File

@ -3,6 +3,7 @@
from odoo import _, api, fields, models from odoo import _, api, fields, models
from odoo.exceptions import ValidationError from odoo.exceptions import ValidationError
from odoo.tools.safe_eval import safe_eval
class KpiDashboard(models.Model): class KpiDashboard(models.Model):
@ -113,9 +114,11 @@ class KpiDashboardItem(models.Model):
color = fields.Char() color = fields.Char()
font_color = fields.Char() font_color = fields.Char()
modify_context = fields.Boolean() modify_context = fields.Boolean()
compute_on_fly = fields.Boolean(related="kpi_id.compute_on_fly")
modify_context_expression = fields.Char() modify_context_expression = fields.Char()
modify_color = fields.Boolean() modify_color = fields.Boolean()
modify_color_expression = fields.Char() modify_color_expression = fields.Char()
special_context = fields.Char()
@api.depends("row", "size_y") @api.depends("row", "size_y")
def _compute_end_row(self): def _compute_end_row(self):
@ -189,9 +192,17 @@ class KpiDashboardItem(models.Model):
} }
) )
if self.kpi_id.compute_on_fly: 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( vals.update(
{ {
"value": self.kpi_id._compute_value(), "value": kpi._compute_value(),
"value_last_update": fields.Datetime.now(), "value_last_update": fields.Datetime.now(),
} }
) )

View File

@ -162,15 +162,16 @@
widget="ace" widget="ace"
options="{'mode': 'python'}" options="{'mode': 'python'}"
/> />
<field
name="special_context"
attrs="{'invisible': [('compute_on_fly', '=', False)]}"
/>
<field name="compute_on_fly" invisible="1" />
</group> </group>
</sheet> </sheet>
<footer> <footer>
<button
name="write" <button string="Save" special="save" class="oe_highlight" />
string="Save"
type="object"
class="oe_highlight"
/>
<button special="cancel" string="Cancel" class="oe_link" /> <button special="cancel" string="Cancel" class="oe_link" />
</footer> </footer>
</form> </form>