diff --git a/kpi/__manifest__.py b/kpi/__manifest__.py
index d14cc89e1..ad7cd1a94 100644
--- a/kpi/__manifest__.py
+++ b/kpi/__manifest__.py
@@ -10,17 +10,18 @@
"category": "Report",
"depends": [
'base_external_dbsource',
+ 'web_widget_color',
],
"data": [
- 'security/ir.model.access.csv',
'security/kpi_security.xml',
- 'views/kpi_category.xml',
- 'views/kpi_history.xml',
- 'views/kpi_threshold_range.xml',
- 'views/kpi_threshold.xml',
- 'views/kpi.xml',
+ 'security/ir.model.access.csv',
+ 'views/kpi_category_views.xml',
+ 'views/kpi_history_views.xml',
+ 'views/kpi_threshold_range_views.xml',
+ 'views/kpi_threshold_views.xml',
+ 'views/kpi_views.xml',
'views/menu.xml',
- 'data/kpi.xml',
+ 'data/kpi_data.xml',
],
"images": [
"images/kpi_definition.png",
diff --git a/kpi/data/kpi.xml b/kpi/data/kpi_data.xml
similarity index 100%
rename from kpi/data/kpi.xml
rename to kpi/data/kpi_data.xml
diff --git a/kpi/models/kpi.py b/kpi/models/kpi.py
index 69c4cabb8..adffe7d4c 100644
--- a/kpi/models/kpi.py
+++ b/kpi/models/kpi.py
@@ -74,6 +74,9 @@ class KPI(models.Model):
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(
+ 'Last execution', compute="_compute_display_last_kpi_value",)
kpi_type = fields.Selection((
('python', 'Python'),
('local', 'SQL - Local DB'),
@@ -109,9 +112,14 @@ class KPI(models.Model):
for obj in self:
history_ids = history_obj.search([("kpi_id", "=", obj.id)])
if history_ids:
- obj.value = obj.history_ids[0].value
+ his = obj.history_ids[0]
+ obj.value = his.value
+ obj.color = his.color
+ obj.last_execution = his.date
else:
obj.value = 0
+ obj.color = '#FFFFFF'
+ obj.last_execution = False
@api.multi
def compute_kpi_value(self):
@@ -131,7 +139,7 @@ class KPI(models.Model):
if is_one_value(res):
kpi_value = res[0]['value']
elif obj.kpi_type == 'python':
- kpi_value = safe_eval(obj.kpi_code)
+ kpi_value = safe_eval(obj.kpi_code, {'self': obj})
threshold_obj = obj.threshold_id
values = {
diff --git a/kpi/models/kpi_history.py b/kpi/models/kpi_history.py
index 10fe4f6de..256aa5183 100644
--- a/kpi/models/kpi_history.py
+++ b/kpi/models/kpi_history.py
@@ -18,7 +18,7 @@ class KPIHistory(models.Model):
'Execution Date',
required=True,
readonly=True,
- default=fields.Datetime.now()
+ default=lambda r: fields.Datetime.now()
)
value = fields.Float('Value', required=True, readonly=True)
color = fields.Text('Color', required=True,
diff --git a/kpi/security/ir.model.access.csv b/kpi/security/ir.model.access.csv
index 59ff6e6a2..a01bf4dcf 100644
--- a/kpi/security/ir.model.access.csv
+++ b/kpi/security/ir.model.access.csv
@@ -4,8 +4,8 @@
"access_kpi_category_user","kpi.category.user","model_kpi_category","base.group_user",1,0,0,0
"access_kpi_threshold_user","kpi.threshold.user","model_kpi_threshold","base.group_user",1,0,0,0
"access_kpi_threshold_range_user","kpi.threshold.range.user","model_kpi_threshold_range","base.group_user",1,0,0,0
-"access_kpi_manager","kpi.manager","model_kpi","base.group_user",1,1,1,1
-"access_kpi_category_manager","kpi.category.manager","model_kpi_category","base.group_user",1,1,1,1
-"access_kpi_threshold_manager","kpi.threshold.manager","model_kpi_threshold","base.group_user",1,1,1,1
-"access_kpi_threshold_range_manager","kpi.threshold.range.manager","model_kpi_threshold_range","base.group_user",1,1,1,1
+"access_kpi_manager","kpi.manager","model_kpi","kpi.group_kpi_manager",1,1,1,1
+"access_kpi_category_manager","kpi.category.manager","model_kpi_category","kpi.group_kpi_manager",1,1,1,1
+"access_kpi_threshold_manager","kpi.threshold.manager","model_kpi_threshold","kpi.group_kpi_manager",1,1,1,1
+"access_kpi_threshold_range_manager","kpi.threshold.range.manager","model_kpi_threshold_range","kpi.group_kpi_manager",1,1,1,1
"access_base_external_dbsource_manager","base.external.dbsource.manager","base_external_dbsource.model_base_external_dbsource","base.group_user",1,1,1,1
diff --git a/kpi/security/kpi_security.xml b/kpi/security/kpi_security.xml
index 64153cbb5..1fe99a28b 100755
--- a/kpi/security/kpi_security.xml
+++ b/kpi/security/kpi_security.xml
@@ -3,6 +3,13 @@
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
+
+
+ Manage KPI's
+
+
+
+
diff --git a/kpi/views/kpi_category.xml b/kpi/views/kpi_category_views.xml
similarity index 100%
rename from kpi/views/kpi_category.xml
rename to kpi/views/kpi_category_views.xml
diff --git a/kpi/views/kpi_history.xml b/kpi/views/kpi_history_views.xml
similarity index 100%
rename from kpi/views/kpi_history.xml
rename to kpi/views/kpi_history_views.xml
diff --git a/kpi/views/kpi_threshold_range.xml b/kpi/views/kpi_threshold_range_views.xml
similarity index 100%
rename from kpi/views/kpi_threshold_range.xml
rename to kpi/views/kpi_threshold_range_views.xml
diff --git a/kpi/views/kpi_threshold.xml b/kpi/views/kpi_threshold_views.xml
similarity index 100%
rename from kpi/views/kpi_threshold.xml
rename to kpi/views/kpi_threshold_views.xml
diff --git a/kpi/views/kpi.xml b/kpi/views/kpi_views.xml
similarity index 56%
rename from kpi/views/kpi.xml
rename to kpi/views/kpi_views.xml
index 9e5f5394a..a2f56f852 100644
--- a/kpi/views/kpi.xml
+++ b/kpi/views/kpi_views.xml
@@ -6,6 +6,7 @@
kpi.tree
kpi
+
@@ -16,6 +17,33 @@
+
+ kpi.kanban
+ kpi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
kpi.filter
@@ -51,21 +79,26 @@
-
-
+
+
-
-
+
+
-
+
@@ -73,7 +106,8 @@
-
+
@@ -87,12 +121,34 @@
+
+ KPI Dashboard
+ kpi
+ form
+ kanban,form
+
+
+
+
+
+ kanban
+
+
+
+
- Key Performance Indicators
+ KPI Maintenance
kpi
form
tree,form
-
+
+
+
+ tree
+
+
+
+
diff --git a/kpi/views/menu.xml b/kpi/views/menu.xml
index 79176a938..f9129d096 100644
--- a/kpi/views/menu.xml
+++ b/kpi/views/menu.xml
@@ -3,44 +3,47 @@
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
-
+
+ groups="kpi.group_kpi_manager"
+ sequence="10"/>
+
+
+ sequence="20"/>
+ sequence="30"/>
+ sequence="40"/>
+ sequence="50"/>