diff --git a/kpi/__manifest__.py b/kpi/__manifest__.py
index 3c629dd948..734689a727 100644
--- a/kpi/__manifest__.py
+++ b/kpi/__manifest__.py
@@ -3,12 +3,12 @@
{
"name": "Key Performance Indicator",
- "version": "13.0.1.0.1",
+ "version": "17.0.1.0.0",
"author": "Savoir-faire Linux,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"license": "AGPL-3",
"category": "Report",
- "depends": ["base_external_dbsource"],
+ "depends": ["base_external_dbsource", "spreadsheet_dashboard"],
"data": [
"security/kpi_security.xml",
"security/ir.model.access.csv",
diff --git a/kpi/models/kpi.py b/kpi/models/kpi.py
index 6b1f9312fc..b7ebb504aa 100644
--- a/kpi/models/kpi.py
+++ b/kpi/models/kpi.py
@@ -16,9 +16,9 @@
def is_one_value(result):
# check if sql query returns only one value
- if type(result) is dict and "value" in result.dictfetchone():
+ if isinstance(result, dict) and "value" in result.dictfetchone():
return True
- elif type(result) is list and "value" in result[0]:
+ elif isinstance(result, list) and "value" in result[0]:
return True
else:
return False
@@ -54,8 +54,8 @@ class KPI(models.Model):
_name = "kpi"
_description = "Key Performance Indicator"
- name = fields.Char("Name", required=True)
- description = fields.Text("Description")
+ name = fields.Char(required=True)
+ description = fields.Text()
category_id = fields.Many2one(
"kpi.category",
"Category",
@@ -66,7 +66,7 @@ class KPI(models.Model):
"Threshold",
required=True,
)
- periodicity = fields.Integer("Periodicity", default=1)
+ periodicity = fields.Integer(default=1)
periodicity_uom = fields.Selection(
[
@@ -83,14 +83,11 @@ class KPI(models.Model):
next_execution_date = fields.Datetime(
"Next execution date",
- readonly=True,
)
value = fields.Float(
- string="Value",
compute="_compute_display_last_kpi_value",
)
color = fields.Text(
- "Color",
compute="_compute_display_last_kpi_value",
)
last_execution = fields.Datetime(
@@ -122,7 +119,6 @@ class KPI(models.Model):
"History",
)
active = fields.Boolean(
- "Active",
help=(
"Only active KPIs will be updated by the scheduler based on"
" the periodicity configuration."
diff --git a/kpi/models/kpi_category.py b/kpi/models/kpi_category.py
index 17c572792d..6491006c18 100644
--- a/kpi/models/kpi_category.py
+++ b/kpi/models/kpi_category.py
@@ -9,5 +9,5 @@ class KPICategory(models.Model):
_name = "kpi.category"
_description = "KPI Category"
- name = fields.Char("Name", size=50, required=True)
- description = fields.Text("Description")
+ name = fields.Char(required=True)
+ description = fields.Text()
diff --git a/kpi/models/kpi_history.py b/kpi/models/kpi_history.py
index 344d0c09cd..e222e02436 100644
--- a/kpi/models/kpi_history.py
+++ b/kpi/models/kpi_history.py
@@ -12,7 +12,6 @@ class KPIHistory(models.Model):
_order = "date desc"
name = fields.Char(
- "Name",
size=150,
required=True,
default=fields.Datetime.now(),
@@ -21,11 +20,10 @@ class KPIHistory(models.Model):
date = fields.Datetime(
"Execution Date",
required=True,
- readonly=True,
default=lambda r: fields.Datetime.now(),
)
- value = fields.Float("Value", required=True, readonly=True)
- color = fields.Text("Color", required=True, readonly=True, default="#FFFFFF")
+ value = fields.Float(required=True)
+ color = fields.Text(required=True, default="#FFFFFF")
company_id = fields.Many2one(
"res.company", "Company", default=lambda self: self.env.company
)
diff --git a/kpi/models/kpi_threshold.py b/kpi/models/kpi_threshold.py
index 51fbdf9304..f4a492c0e4 100644
--- a/kpi/models/kpi_threshold.py
+++ b/kpi/models/kpi_threshold.py
@@ -34,7 +34,7 @@ def _compute_is_valid_threshold(self):
"Please make sure your ranges do not overlap."
)
- name = fields.Char("Name", size=50, required=True)
+ name = fields.Char(required=True)
range_ids = fields.Many2many(
"kpi.threshold.range",
"kpi_threshold_range_rel",
@@ -43,7 +43,6 @@ def _compute_is_valid_threshold(self):
"Ranges",
)
valid = fields.Boolean(
- string="Valid",
required=True,
compute="_compute_is_valid_threshold",
default=True,
@@ -79,7 +78,7 @@ def create(self, data):
)
range_obj2 = self.env["kpi.threshold.range"]
range_obj1 = self.env["kpi.threshold.range"]
- return super(KPIThreshold, self).create(data)
+ return super().create(data)
def get_color(self, kpi_value):
color = "#FFFFFF"
diff --git a/kpi/models/kpi_threshold_range.py b/kpi/models/kpi_threshold_range.py
index 434c4d4897..4c669170b8 100644
--- a/kpi/models/kpi_threshold_range.py
+++ b/kpi/models/kpi_threshold_range.py
@@ -9,9 +9,9 @@
def is_one_value(result):
# check if sql query returns only one value
- if type(result) is dict and "value" in result.dictfetchone():
+ if isinstance(result, dict) and "value" in result.dictfetchone():
return True
- elif type(result) is list and "value" in result[0]:
+ elif isinstance(result, list) and "value" in result[0]:
return True
else:
return False
@@ -58,16 +58,14 @@ def _selection_value_type(self):
("external", "SQL - External DB"),
]
- name = fields.Char("Name", size=50, required=True)
+ name = fields.Char(required=True)
valid = fields.Boolean(
- string="Valid", required=True, compute="_compute_is_valid_range", default=True
+ required=True, compute="_compute_is_valid_range", default=True
)
invalid_message = fields.Char(
string="Message", size=100, compute="_compute_is_valid_range"
)
- min_type = fields.Selection(
- selection="_selection_value_type", string="Min Type", required=True
- )
+ min_type = fields.Selection(selection="_selection_value_type", required=True)
min_value = fields.Float(string="Minimum Value", compute="_compute_min_value")
min_fixed_value = fields.Float("Minimum Fixed Value")
min_code = fields.Text("Minimum Computation Code")
@@ -76,9 +74,7 @@ def _selection_value_type(self):
"base.external.dbsource",
"External DB Source Minimum",
)
- max_type = fields.Selection(
- selection="_selection_value_type", string="Max Type", required=True
- )
+ max_type = fields.Selection(selection="_selection_value_type", required=True)
max_value = fields.Float(string="Maximum Value", compute="_compute_max_value")
max_fixed_value = fields.Float("Maximum Fixed Value")
max_code = fields.Text("Maximum Computation Code")
@@ -88,7 +84,7 @@ def _selection_value_type(self):
"External DB Source Maximum",
)
- color = fields.Char(string="Color", help="Choose your color")
+ color = fields.Char(help="Choose your color")
threshold_ids = fields.Many2many(
"kpi.threshold",
diff --git a/kpi/tests/test_kpi.py b/kpi/tests/test_kpi.py
index 96c63eb421..4953efe3b2 100644
--- a/kpi/tests/test_kpi.py
+++ b/kpi/tests/test_kpi.py
@@ -4,8 +4,9 @@
class TestKPI(TransactionCase):
- def setUp(self):
- super(TestKPI, self).setUp()
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass()
def test_invalid_threshold_range(self):
range1 = self.env["kpi.threshold.range"].create(
diff --git a/kpi/views/kpi_category_views.xml b/kpi/views/kpi_category_views.xml
index 466c5b80aa..c809068a03 100644
--- a/kpi/views/kpi_category_views.xml
+++ b/kpi/views/kpi_category_views.xml
@@ -7,7 +7,7 @@
kpi.category.tree
kpi.category
-
+
diff --git a/kpi/views/kpi_history_views.xml b/kpi/views/kpi_history_views.xml
index c2abf7ebd5..635368c4d0 100644
--- a/kpi/views/kpi_history_views.xml
+++ b/kpi/views/kpi_history_views.xml
@@ -7,11 +7,11 @@
kpi.history.tree
kpi.history
-
+
-
-
-
+
+
+
@@ -25,9 +25,9 @@
-
-
-
+
+
+
diff --git a/kpi/views/kpi_threshold_range_views.xml b/kpi/views/kpi_threshold_range_views.xml
index 1473a32dfb..5cf70aa0f4 100644
--- a/kpi/views/kpi_threshold_range_views.xml
+++ b/kpi/views/kpi_threshold_range_views.xml
@@ -7,11 +7,11 @@
kpi.threshold.range.tree
kpi.threshold.range
-
+
-
+
@@ -25,7 +25,7 @@
-
+
-
+
@@ -63,25 +59,21 @@
-
+
@@ -89,13 +81,13 @@
diff --git a/kpi/views/kpi_threshold_views.xml b/kpi/views/kpi_threshold_views.xml
index 280181ccfd..c69ac6e426 100644
--- a/kpi/views/kpi_threshold_views.xml
+++ b/kpi/views/kpi_threshold_views.xml
@@ -7,7 +7,7 @@
kpi.threshold.tree
kpi.threshold
-
+
@@ -38,13 +38,13 @@
diff --git a/kpi/views/kpi_views.xml b/kpi/views/kpi_views.xml
index 34d68da09b..aff216e0d3 100644
--- a/kpi/views/kpi_views.xml
+++ b/kpi/views/kpi_views.xml
@@ -8,9 +8,9 @@
kpi
-
+
-
+
@@ -24,8 +24,8 @@
-
-
+
+
@@ -41,7 +41,7 @@
t-attf-style="color:#{record.color.raw_value}"
>
-
+
-
+
+
-
+
diff --git a/kpi/views/menu.xml b/kpi/views/menu.xml
index b951090e83..58e7b145df 100644
--- a/kpi/views/menu.xml
+++ b/kpi/views/menu.xml
@@ -2,19 +2,21 @@
+
+