diff --git a/kpi/models/kpi_threshold.py b/kpi/models/kpi_threshold.py
index 09625f42d..b62a3ffbb 100644
--- a/kpi/models/kpi_threshold.py
+++ b/kpi/models/kpi_threshold.py
@@ -13,27 +13,25 @@ class KPIThreshold(models.Model):
@api.multi
def _compute_is_valid_threshold(self):
- result = {}
for obj in self:
# check if ranges overlap
# TODO: This code can be done better
+ obj.valid = True
for range1 in obj.range_ids:
- for range2 in obj.range_ids:
- if (range1.valid and range2.valid and
- range1.min_value < range2.min_value):
- result[obj.id] = range1.max_value <= range2.min_value
- return result
-
- @api.multi
- def _compute_generate_invalid_message(self):
- result = {}
- for obj in self:
+ if not range1.valid:
+ obj.valid = False
+ break
+ for range2 in (obj.range_ids-range1):
+ if (range1.max_value >= range2.min_value and
+ range1.min_value <= range2.max_value):
+ obj.valid = False
+ break
if obj.valid:
- result[obj.id] = ""
+ obj.invalid_message = None
else:
- result[obj.id] = ("Two of your ranges are overlapping. Please "
- "make sure your ranges do not overlap.")
- return result
+ obj.invalid_message = (
+ "Some ranges are invalid or overlapping. "
+ "Please make sure your ranges do not overlap.")
name = fields.Char('Name', size=50, required=True)
range_ids = fields.Many2many(
@@ -46,7 +44,7 @@ class KPIThreshold(models.Model):
valid = fields.Boolean(string='Valid', required=True,
compute="_compute_is_valid_threshold", default=True)
invalid_message = fields.Char(string='Message', size=100,
- compute="_compute_generate_invalid_message")
+ compute="_compute_is_valid_threshold")
kpi_ids = fields.One2many('kpi', 'threshold_id', 'KPIs')
company_id = fields.Many2one(
'res.company', 'Company',
diff --git a/kpi/models/kpi_threshold_range.py b/kpi/models/kpi_threshold_range.py
index c637cc9bf..a5b32313f 100644
--- a/kpi/models/kpi_threshold_range.py
+++ b/kpi/models/kpi_threshold_range.py
@@ -92,10 +92,8 @@ class KPIThresholdRange(models.Model):
'res.company', 'Company',
default=lambda self: self.env.user.company_id.id)
-
@api.multi
def _compute_min_value(self):
- result = {}
for obj in self:
value = None
error = None
@@ -121,11 +119,9 @@ class KPIThresholdRange(models.Model):
error = str(e)
obj.min_value = value
obj.min_error = error
- return result
@api.multi
def _compute_max_value(self):
- result = {}
for obj in self:
value = None
error = None
@@ -151,11 +147,9 @@ class KPIThresholdRange(models.Model):
error = str(e)
obj.max_value = value
obj.max_error = error
- return result
@api.multi
def _compute_is_valid_range(self):
- result = {}
for obj in self:
if obj.min_error or obj.max_error:
obj.valid = False
@@ -170,5 +164,3 @@ class KPIThresholdRange(models.Model):
else:
obj.valid = True
obj.invalid_message = ""
- return result
-
diff --git a/kpi/views/kpi.xml b/kpi/views/kpi.xml
index ae7a9054e..73cff3cee 100644
--- a/kpi/views/kpi.xml
+++ b/kpi/views/kpi.xml
@@ -48,37 +48,39 @@
kpi
diff --git a/kpi/views/kpi_category.xml b/kpi/views/kpi_category.xml
index 210892444..80c8ac155 100644
--- a/kpi/views/kpi_category.xml
+++ b/kpi/views/kpi_category.xml
@@ -23,11 +23,13 @@
kpi.category
diff --git a/kpi/views/kpi_history.xml b/kpi/views/kpi_history.xml
index 5852adbdb..b6d0cc173 100644
--- a/kpi/views/kpi_history.xml
+++ b/kpi/views/kpi_history.xml
@@ -23,14 +23,16 @@
kpi.history
diff --git a/kpi/views/kpi_threshold.xml b/kpi/views/kpi_threshold.xml
index 7582422af..4bb2d0456 100644
--- a/kpi/views/kpi_threshold.xml
+++ b/kpi/views/kpi_threshold.xml
@@ -9,7 +9,7 @@
kpi.threshold.tree
kpi.threshold
-
+
@@ -22,21 +22,24 @@
kpi.threshold
diff --git a/kpi/views/kpi_threshold_range.xml b/kpi/views/kpi_threshold_range.xml
index 67853f319..9ca25e463 100644
--- a/kpi/views/kpi_threshold_range.xml
+++ b/kpi/views/kpi_threshold_range.xml
@@ -9,7 +9,7 @@
kpi.threshold.range.tree
kpi.threshold.range
-
+
@@ -25,37 +25,39 @@
kpi.threshold.range