diff --git a/kpi/models/kpi_threshold.py b/kpi/models/kpi_threshold.py index 09625f42..b62a3ffb 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 c637cc9b..a5b32313 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 ae7a9054..73cff3ce 100644 --- a/kpi/views/kpi.xml +++ b/kpi/views/kpi.xml @@ -48,37 +48,39 @@ kpi
- - - - - - -