[IMP] kpi_dashboard: black, isort, prettier

This commit is contained in:
Enric Tobella
2020-10-22 20:47:04 +02:00
parent 62b3a0393e
commit c90a783925
26 changed files with 955 additions and 845 deletions

View File

@@ -1,17 +1,20 @@
# Copyright 2020 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
import ast
from odoo.tools.safe_eval import safe_eval
from odoo.addons.base.models.ir_cron import _intervalTypes
from odoo.tools.float_utils import float_compare
import re
import json
import datetime
import json
import re
from dateutil import relativedelta
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
from odoo.tools.float_utils import float_compare
from odoo.tools.safe_eval import safe_eval
from odoo.addons.base.models.ir_cron import _intervalTypes
class KpiKpi(models.Model):
_name = "kpi.kpi"
@@ -30,8 +33,13 @@ class KpiKpi(models.Model):
args = fields.Char()
kwargs = fields.Char()
widget = fields.Selection(
[('integer', 'Integer'), ("number", "Number"), ("meter", "Meter"),
('counter', 'Counter'), ("graph", "Graph")],
[
("integer", "Integer"),
("number", "Number"),
("meter", "Meter"),
("counter", "Counter"),
("graph", "Graph"),
],
required=True,
default="number",
)
@@ -40,22 +48,21 @@ class KpiKpi(models.Model):
suffix = fields.Char()
action_ids = fields.One2many(
"kpi.kpi.action",
inverse_name='kpi_id',
help="Actions that can be opened from the KPI"
inverse_name="kpi_id",
help="Actions that can be opened from the KPI",
)
code = fields.Text("Code")
store_history = fields.Boolean()
store_history_interval = fields.Selection(
selection=lambda self:
self.env['ir.cron']._fields['interval_type'].selection,
selection=lambda self: self.env["ir.cron"]._fields["interval_type"].selection,
)
store_history_interval_number = fields.Integer()
compute_on_fly = fields.Boolean()
history_ids = fields.One2many("kpi.kpi.history", inverse_name="kpi_id")
computed_value = fields.Serialized(compute='_compute_computed_value')
computed_date = fields.Datetime(compute='_compute_computed_value')
computed_value = fields.Serialized(compute="_compute_computed_value")
computed_date = fields.Datetime(compute="_compute_computed_value")
@api.depends('value', 'value_last_update', 'compute_on_fly')
@api.depends("value", "value_last_update", "compute_on_fly")
def _compute_computed_value(self):
for record in self:
if record.compute_on_fly:
@@ -95,18 +102,19 @@ class KpiKpi(models.Model):
value = self._compute_value()
self.write({"value": value})
if self.store_history:
last = self.env['kpi.kpi.history'].search([
('kpi_id', '=', self.id)
], limit=1)
last = self.env["kpi.kpi.history"].search(
[("kpi_id", "=", self.id)], limit=1
)
if (
not last or
not self.store_history_interval or
last.create_date + _intervalTypes[self.store_history_interval](
self.store_history_interval_number) < fields.Datetime.now()
):
self.env["kpi.kpi.history"].create(
self._generate_history_vals(value)
not last
or not self.store_history_interval
or last.create_date
+ _intervalTypes[self.store_history_interval](
self.store_history_interval_number
)
< fields.Datetime.now()
):
self.env["kpi.kpi.history"].create(self._generate_history_vals(value))
notifications = []
for dashboard_item in self.dashboard_item_ids:
channel = "kpi_dashboard_%s" % dashboard_item.dashboard_id.id
@@ -152,9 +160,9 @@ class KpiKpi(models.Model):
if len(message) > 0:
message += _(" or ")
message += forbidden[-1]
raise ValidationError(_(
"The code cannot contain the following terms: %s."
) % message)
raise ValidationError(
_("The code cannot contain the following terms: %s.") % message
)
results = self._get_code_input_dict()
savepoint = "kpi_formula_%s" % self.id
self.env.cr.execute("savepoint %s" % savepoint)
@@ -164,30 +172,34 @@ class KpiKpi(models.Model):
def show_value(self):
self.ensure_one()
action = self.env.ref('kpi_dashboard.kpi_kpi_act_window')
action = self.env.ref("kpi_dashboard.kpi_kpi_act_window")
result = action.read()[0]
result.update({
'res_id': self.id,
'target': 'new',
'view_mode': 'form',
'views': [(self.env.ref(
'kpi_dashboard.kpi_kpi_widget_form_view'
).id, 'form')],
})
result.update(
{
"res_id": self.id,
"target": "new",
"view_mode": "form",
"views": [
(self.env.ref("kpi_dashboard.kpi_kpi_widget_form_view").id, "form")
],
}
)
return result
class KpiKpiAction(models.Model):
_name = 'kpi.kpi.action'
_description = 'KPI action'
_name = "kpi.kpi.action"
_description = "KPI action"
kpi_id = fields.Many2one('kpi.kpi', required=True, ondelete='cascade')
kpi_id = fields.Many2one("kpi.kpi", required=True, ondelete="cascade")
action = fields.Reference(
selection=[('ir.actions.report', 'ir.actions.report'),
('ir.actions.act_window', 'ir.actions.act_window'),
('ir.actions.act_url', 'ir.actions.act_url'),
('ir.actions.server', 'ir.actions.server'),
('ir.actions.client', 'ir.actions.client')],
selection=[
("ir.actions.report", "ir.actions.report"),
("ir.actions.act_window", "ir.actions.act_window"),
("ir.actions.act_url", "ir.actions.act_url"),
("ir.actions.server", "ir.actions.server"),
("ir.actions.client", "ir.actions.client"),
],
required=True,
)
context = fields.Char()
@@ -196,43 +208,45 @@ class KpiKpiAction(models.Model):
result = {}
for r in self:
result[r.id] = {
'id': r.action.id,
'type': r.action._name,
'name': r.action.name,
'context': safe_eval(r.context or '{}')
"id": r.action.id,
"type": r.action._name,
"name": r.action.name,
"context": safe_eval(r.context or "{}"),
}
return result
class KpiKpiHistory(models.Model):
_name = 'kpi.kpi.history'
_description = 'KPI history'
_order = 'create_date DESC'
_name = "kpi.kpi.history"
_description = "KPI history"
_order = "create_date DESC"
kpi_id = fields.Many2one(
'kpi.kpi', required=True, ondelete='cascade', readonly=True
"kpi.kpi", required=True, ondelete="cascade", readonly=True
)
value = fields.Serialized(readonly=True)
raw_value = fields.Char(compute='_compute_raw_value')
name = fields.Char(related='kpi_id.name')
raw_value = fields.Char(compute="_compute_raw_value")
name = fields.Char(related="kpi_id.name")
widget = fields.Selection(
selection=lambda self:
self.env['kpi.kpi']._fields['widget'].selection,
required=True)
selection=lambda self: self.env["kpi.kpi"]._fields["widget"].selection,
required=True,
)
@api.depends('value')
@api.depends("value")
def _compute_raw_value(self):
for record in self:
record.raw_value = json.dumps(record.value)
def show_form(self):
self.ensure_one()
action = self.env.ref('kpi_dashboard.kpi_kpi_history_act_window')
action = self.env.ref("kpi_dashboard.kpi_kpi_history_act_window")
result = action.read()[0]
result.update({
'res_id': self.id,
'target': 'new',
'view_mode': 'form',
'views': [(self.env.context.get('form_id'), 'form')],
})
result.update(
{
"res_id": self.id,
"target": "new",
"view_mode": "form",
"views": [(self.env.context.get("form_id"), "form")],
}
)
return result