diff --git a/kpi/__manifest__.py b/kpi/__manifest__.py index 636a13e63..3a9e48058 100644 --- a/kpi/__manifest__.py +++ b/kpi/__manifest__.py @@ -3,12 +3,12 @@ { "name": "Key Performance Indicator", - "version": "12.0.1.0.0", + "version": "13.0.1.0.0", "author": "Savoir-faire Linux,Odoo Community Association (OCA)", "website": "http://www.savoirfairelinux.com", "license": "AGPL-3", "category": "Report", - "depends": ["base_external_dbsource", "web_widget_color",], + "depends": ["base_external_dbsource"], "data": [ "security/kpi_security.xml", "security/ir.model.access.csv", diff --git a/kpi/models/kpi.py b/kpi/models/kpi.py index b0bac03ea..4a856312a 100644 --- a/kpi/models/kpi.py +++ b/kpi/models/kpi.py @@ -61,13 +61,13 @@ class KPI(models.Model): periodicity = fields.Integer("Periodicity", default=1) periodicity_uom = fields.Selection( - ( + [ ("minute", "Minute"), ("hour", "Hour"), ("day", "Day"), ("week", "Week"), ("month", "Month"), - ), + ], "Periodicity UoM", required=True, default="day", @@ -80,11 +80,11 @@ class KPI(models.Model): "Last execution", compute="_compute_display_last_kpi_value", ) kpi_type = fields.Selection( - ( + [ ("python", "Python"), ("local", "SQL - Local DB"), ("external", "SQL - External DB"), - ), + ], "KPI Computation Type", ) @@ -105,10 +105,9 @@ class KPI(models.Model): default=True, ) company_id = fields.Many2one( - "res.company", "Company", default=lambda self: self.env.user.company_id.id + "res.company", "Company", default=lambda self: self.env.company ) - @api.multi def _compute_display_last_kpi_value(self): history_obj = self.env["kpi.history"] for obj in self: @@ -123,7 +122,6 @@ class KPI(models.Model): obj.color = "#FFFFFF" obj.last_execution = False - @api.multi def _get_kpi_value(self): self.ensure_one() kpi_value = 0 @@ -155,7 +153,6 @@ class KPI(models.Model): res.update({"kpi_id": self.id}) return res - @api.multi def compute_kpi_value(self): for obj in self: history_vals = obj._get_kpi_value() @@ -163,7 +160,6 @@ class KPI(models.Model): history_obj.sudo().create(history_vals) return True - @api.multi def update_next_execution_date(self): for obj in self: if obj.periodicity_uom == "hour": diff --git a/kpi/models/kpi_history.py b/kpi/models/kpi_history.py index 4090479f4..e129117e2 100644 --- a/kpi/models/kpi_history.py +++ b/kpi/models/kpi_history.py @@ -22,5 +22,5 @@ class KPIHistory(models.Model): value = fields.Float("Value", required=True, readonly=True) color = fields.Text("Color", required=True, readonly=True, default="#FFFFFF") company_id = fields.Many2one( - "res.company", "Company", default=lambda self: self.env.user.company_id.id + "res.company", "Company", default=lambda self: self.env.company ) diff --git a/kpi/models/kpi_threshold.py b/kpi/models/kpi_threshold.py index 6623f03e6..51fbdf930 100644 --- a/kpi/models/kpi_threshold.py +++ b/kpi/models/kpi_threshold.py @@ -10,7 +10,6 @@ class KPIThreshold(models.Model): _name = "kpi.threshold" _description = "KPI Threshold" - @api.multi def _compute_is_valid_threshold(self): for obj in self: # check if ranges overlap @@ -54,7 +53,7 @@ class KPIThreshold(models.Model): ) kpi_ids = fields.One2many("kpi", "threshold_id", "KPIs") company_id = fields.Many2one( - "res.company", "Company", default=lambda self: self.env.user.company_id.id + "res.company", "Company", default=lambda self: self.env.company ) @api.model @@ -82,7 +81,6 @@ class KPIThreshold(models.Model): range_obj1 = self.env["kpi.threshold.range"] return super(KPIThreshold, self).create(data) - @api.multi def get_color(self, kpi_value): color = "#FFFFFF" for obj in self: diff --git a/kpi/models/kpi_threshold_range.py b/kpi/models/kpi_threshold_range.py index cde2b5242..d7aae7ffd 100644 --- a/kpi/models/kpi_threshold_range.py +++ b/kpi/models/kpi_threshold_range.py @@ -49,6 +49,15 @@ class KPIThresholdRange(models.Model): _name = "kpi.threshold.range" _description = "KPI Threshold Range" + @api.model + def _selection_value_type(self): + return [ + ("static", "Fixed value"), + ("python", "Python Code"), + ("local", "SQL - Local DB"), + ("external", "SQL - External DB"), + ] + name = fields.Char("Name", size=50, required=True) valid = fields.Boolean( string="Valid", required=True, compute="_compute_is_valid_range", default=True @@ -57,14 +66,7 @@ class KPIThresholdRange(models.Model): string="Message", size=100, compute="_compute_is_valid_range" ) min_type = fields.Selection( - ( - ("static", "Fixed value"), - ("python", "Python Code"), - ("local", "SQL - Local DB"), - ("external", "SQL - Externa DB"), - ), - "Min Type", - required=True, + selection="_selection_value_type", string="Min Type", required=True ) min_value = fields.Float(string="Minimum Value", compute="_compute_min_value") min_fixed_value = fields.Float("Minimum Fixed Value") @@ -74,14 +76,7 @@ class KPIThresholdRange(models.Model): "base.external.dbsource", "External DB Source Minimum", ) max_type = fields.Selection( - ( - ("static", "Fixed value"), - ("python", "Python Code"), - ("local", "SQL - Local DB"), - ("external", "SQL - External DB"), - ), - "Max Type", - required=True, + selection="_selection_value_type", string="Max Type", required=True ) max_value = fields.Float(string="Maximum Value", compute="_compute_max_value") max_fixed_value = fields.Float("Maximum Fixed Value") @@ -101,10 +96,9 @@ class KPIThresholdRange(models.Model): "Thresholds", ) company_id = fields.Many2one( - "res.company", "Company", default=lambda self: self.env.user.company_id.id + "res.company", "Company", default=lambda self: self.env.company ) - @api.multi def _compute_min_value(self): for obj in self: value = None @@ -134,7 +128,6 @@ class KPIThresholdRange(models.Model): obj.min_value = value obj.min_error = error - @api.multi def _compute_max_value(self): for obj in self: value = None @@ -164,7 +157,6 @@ class KPIThresholdRange(models.Model): obj.max_value = value obj.max_error = error - @api.multi def _compute_is_valid_range(self): for obj in self: if obj.min_error or obj.max_error: diff --git a/kpi/readme/CONTRIBUTORS.rst b/kpi/readme/CONTRIBUTORS.rst index 1cdac40a3..5d339513f 100644 --- a/kpi/readme/CONTRIBUTORS.rst +++ b/kpi/readme/CONTRIBUTORS.rst @@ -5,3 +5,6 @@ * Gervais Naoussi * Iván Todorovich * Adrià Gil +* `Guadaltech `_: + + * Fernando La Chica diff --git a/kpi/security/kpi_security.xml b/kpi/security/kpi_security.xml old mode 100755 new mode 100644 index bd0d80011..820627787 --- a/kpi/security/kpi_security.xml +++ b/kpi/security/kpi_security.xml @@ -17,7 +17,7 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + >['|',('company_id','=',False),('company_id', 'in', company_ids)] kpi_threshold_range multi-company @@ -25,7 +25,7 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + >['|',('company_id','=',False),('company_id', 'in', company_ids)] kpi_threshold multi-company @@ -33,7 +33,7 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + >['|',('company_id','=',False),('company_id', 'in', company_ids)] kpi_history multi-company @@ -41,7 +41,7 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] + >['|',('company_id','=',False),('company_id', 'in', company_ids)] diff --git a/kpi/tests/test_kpi.py b/kpi/tests/test_kpi.py index 00e363b49..96c63eb42 100644 --- a/kpi/tests/test_kpi.py +++ b/kpi/tests/test_kpi.py @@ -68,11 +68,11 @@ class TestKPI(TransactionCase): ) threshold1 = self.env["kpi.threshold"].create( - {"name": "Threshold1", "range_ids": [(6, 0, [range1.id, range2.id])],} + {"name": "Threshold1", "range_ids": [(6, 0, [range1.id, range2.id])]} ) threshold2 = self.env["kpi.threshold"].create( - {"name": "Threshold1", "range_ids": [(6, 0, [range3.id, range2.id])],} + {"name": "Threshold1", "range_ids": [(6, 0, [range3.id, range2.id])]} ) threshold3 = self.env["kpi.threshold"].create( diff --git a/kpi/views/kpi_category_views.xml b/kpi/views/kpi_category_views.xml index cca3fdbfb..466c5b80a 100644 --- a/kpi/views/kpi_category_views.xml +++ b/kpi/views/kpi_category_views.xml @@ -30,7 +30,6 @@ Categories kpi.category - form tree,form diff --git a/kpi/views/kpi_threshold_range_views.xml b/kpi/views/kpi_threshold_range_views.xml index 7e577f17c..1473a32df 100644 --- a/kpi/views/kpi_threshold_range_views.xml +++ b/kpi/views/kpi_threshold_range_views.xml @@ -106,7 +106,6 @@ Ranges kpi.threshold.range - form tree,form diff --git a/kpi/views/kpi_threshold_views.xml b/kpi/views/kpi_threshold_views.xml index 52a788206..280181ccf 100644 --- a/kpi/views/kpi_threshold_views.xml +++ b/kpi/views/kpi_threshold_views.xml @@ -56,7 +56,6 @@ Thresholds kpi.threshold - form tree,form diff --git a/kpi/views/kpi_views.xml b/kpi/views/kpi_views.xml index 346bf0d85..34d68da09 100644 --- a/kpi/views/kpi_views.xml +++ b/kpi/views/kpi_views.xml @@ -142,7 +142,6 @@ KPI Dashboard kpi - form kanban,form @@ -155,7 +154,6 @@ KPI Maintenance kpi - form tree,form diff --git a/oca_dependencies.txt b/oca_dependencies.txt index 9c8c9172c..13546285c 100644 --- a/oca_dependencies.txt +++ b/oca_dependencies.txt @@ -1 +1,2 @@ server-tools +server-backend diff --git a/setup/kpi/odoo/addons/kpi b/setup/kpi/odoo/addons/kpi new file mode 120000 index 000000000..a94dc85bd --- /dev/null +++ b/setup/kpi/odoo/addons/kpi @@ -0,0 +1 @@ +../../../../kpi \ No newline at end of file diff --git a/setup/kpi/setup.py b/setup/kpi/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/kpi/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)