From 150b71d194cea9bdd0e5b16f26e9b5afbd7b21d5 Mon Sep 17 00:00:00 2001 From: HviorForgeFlow Date: Wed, 15 Apr 2020 10:54:36 +0200 Subject: [PATCH] [MIG] bi_sql_editor: Migration to 13.0 --- bi_sql_editor/__manifest__.py | 2 +- bi_sql_editor/models/bi_sql_view.py | 42 +------------------ bi_sql_editor/models/bi_sql_view_field.py | 9 ---- bi_sql_editor/tests/test_bi_sql_view.py | 4 +- bi_sql_editor/views/action.xml | 1 - oca_dependencies.txt | 1 + setup/bi_sql_editor/odoo/addons/bi_sql_editor | 1 + setup/bi_sql_editor/setup.py | 6 +++ 8 files changed, 13 insertions(+), 53 deletions(-) create mode 100644 oca_dependencies.txt create mode 120000 setup/bi_sql_editor/odoo/addons/bi_sql_editor create mode 100644 setup/bi_sql_editor/setup.py diff --git a/bi_sql_editor/__manifest__.py b/bi_sql_editor/__manifest__.py index 16b9dfa3e..4eb91109f 100644 --- a/bi_sql_editor/__manifest__.py +++ b/bi_sql_editor/__manifest__.py @@ -5,7 +5,7 @@ { "name": "BI SQL Editor", "summary": "BI Views builder, based on Materialized or Normal SQL Views", - "version": "12.0.1.2.0", + "version": "13.0.1.0.0", "license": "AGPL-3", "category": "Reporting", "author": "GRAP,Odoo Community Association (OCA)", diff --git a/bi_sql_editor/models/bi_sql_view.py b/bi_sql_editor/models/bi_sql_view.py index 7c5f7bd4a..10fb54813 100644 --- a/bi_sql_editor/models/bi_sql_view.py +++ b/bi_sql_editor/models/bi_sql_view.py @@ -23,7 +23,7 @@ def _instanciate(self, model_data): # This monkey patch is meant to avoid create/search tables for those # materialized views. Doing "super" doesn't work. class CustomModel(models.Model): - _name = pycompat.to_native(model_data["model"]) + _name = pycompat.to_text(model_data["model"]) _description = model_data["name"] _module = False _custom = True @@ -43,6 +43,7 @@ IrModel._instanciate = _instanciate class BiSQLView(models.Model): _name = "bi.sql.view" + _description = "BI SQL View" _order = "sequence" _inherit = ["sql.request.mixin"] @@ -196,7 +197,6 @@ class BiSQLView(models.Model): # Constrains Section @api.constrains("is_materialized") - @api.multi def _check_index_materialized(self): for rec in self.filtered(lambda x: not x.is_materialized): if rec.bi_sql_view_field_ids.filtered(lambda x: x.is_index): @@ -205,7 +205,6 @@ class BiSQLView(models.Model): ) @api.constrains("view_order") - @api.multi def _check_view_order(self): for rec in self: if rec.view_order: @@ -217,7 +216,6 @@ class BiSQLView(models.Model): # Compute Section @api.depends("is_materialized") - @api.multi def _compute_materialized_text(self): for sql_view in self: sql_view.materialized_text = ( @@ -225,7 +223,6 @@ class BiSQLView(models.Model): ) @api.depends("technical_name") - @api.multi def _compute_view_name(self): for sql_view in self: sql_view.view_name = "{}{}".format( @@ -233,7 +230,6 @@ class BiSQLView(models.Model): ) @api.depends("technical_name") - @api.multi def _compute_model_name(self): for sql_view in self: sql_view.model_name = "{}{}".format( @@ -246,7 +242,6 @@ class BiSQLView(models.Model): self.has_group_changed = True # Overload Section - @api.multi def write(self, vals): res = super(BiSQLView, self).write(vals) if vals.get("sequence", False): @@ -254,7 +249,6 @@ class BiSQLView(models.Model): rec.menu_id.sequence = rec.sequence return res - @api.multi def unlink(self): if any(view.state not in ("draft", "sql_valid") for view in self): raise UserError( @@ -265,7 +259,6 @@ class BiSQLView(models.Model): ) return super(BiSQLView, self).unlink() - @api.multi def copy(self, default=None): self.ensure_one() default = dict(default or {}) @@ -278,7 +271,6 @@ class BiSQLView(models.Model): return super(BiSQLView, self).copy(default=default) # Action Section - @api.multi def button_create_sql_view_and_model(self): for sql_view in self: if sql_view.state != "sql_valid": @@ -299,7 +291,6 @@ class BiSQLView(models.Model): ) sql_view.state = "model_valid" - @api.multi def button_set_draft(self): for sql_view in self: sql_view.menu_id.unlink() @@ -321,7 +312,6 @@ class BiSQLView(models.Model): sql_view.write({"state": "draft", "has_group_changed": False}) - @api.multi def button_create_ui(self): self.tree_view_id = self.env["ir.ui.view"].create(self._prepare_tree_view()).id self.graph_view_id = ( @@ -339,17 +329,14 @@ class BiSQLView(models.Model): self.menu_id = self.env["ir.ui.menu"].create(self._prepare_menu()).id self.write({"state": "ui_valid"}) - @api.multi def button_update_model_access(self): self._drop_model_access() self._create_model_access() self.write({"has_group_changed": False}) - @api.multi def button_refresh_materialized_view(self): self._refresh_materialized_view() - @api.multi def button_open_view(self): return { "type": "ir.actions.act_window", @@ -359,7 +346,6 @@ class BiSQLView(models.Model): } # Prepare Function - @api.multi def _prepare_model(self): self.ensure_one() field_id = [] @@ -374,7 +360,6 @@ class BiSQLView(models.Model): "field_id": field_id, } - @api.multi def _prepare_model_access(self): self.ensure_one() res = [] @@ -392,7 +377,6 @@ class BiSQLView(models.Model): ) return res - @api.multi def _prepare_cron(self): self.ensure_one() return { @@ -406,7 +390,6 @@ class BiSQLView(models.Model): "numbercall": -1, } - @api.multi def _prepare_rule(self): self.ensure_one() return { @@ -416,7 +399,6 @@ class BiSQLView(models.Model): "global": True, } - @api.multi def _prepare_tree_view(self): self.ensure_one() return { @@ -430,7 +412,6 @@ class BiSQLView(models.Model): ), } - @api.multi def _prepare_graph_view(self): self.ensure_one() return { @@ -444,7 +425,6 @@ class BiSQLView(models.Model): ), } - @api.multi def _prepare_pivot_view(self): self.ensure_one() return { @@ -458,7 +438,6 @@ class BiSQLView(models.Model): ), } - @api.multi def _prepare_search_view(self): self.ensure_one() return { @@ -481,7 +460,6 @@ class BiSQLView(models.Model): ), } - @api.multi def _prepare_action(self): self.ensure_one() view_mode = self.view_order @@ -502,7 +480,6 @@ class BiSQLView(models.Model): "context": self.action_context, } - @api.multi def _prepare_action_name(self): self.ensure_one() if not self.is_materialized: @@ -511,7 +488,6 @@ class BiSQLView(models.Model): self.name, datetime.utcnow().strftime(_("%m/%d/%Y %H:%M:%S UTC")), ) - @api.multi def _prepare_menu(self): self.ensure_one() return { @@ -526,7 +502,6 @@ class BiSQLView(models.Model): _logger.info("Executing SQL Request %s ..." % req) self.env.cr.execute(req) - @api.multi def _drop_view(self): for sql_view in self: self._log_execute( @@ -535,7 +510,6 @@ class BiSQLView(models.Model): ) sql_view.size = False - @api.multi def _create_view(self): for sql_view in self: sql_view._drop_view() @@ -548,7 +522,6 @@ class BiSQLView(models.Model): % (sql_view.materialized_text, sql_view.view_name, str(e)) ) - @api.multi def _create_index(self): for sql_view in self: for sql_field in sql_view.bi_sql_view_field_ids.filtered( @@ -559,7 +532,6 @@ class BiSQLView(models.Model): % (sql_field.index_name, sql_view.view_name, sql_field.name) ) - @api.multi def _create_model_and_fields(self): for sql_view in self: # Create model @@ -570,20 +542,17 @@ class BiSQLView(models.Model): req = "DROP TABLE %s" % sql_view.view_name self._log_execute(req) - @api.multi def _create_model_access(self): for sql_view in self: for item in sql_view._prepare_model_access(): self.env["ir.model.access"].create(item) - @api.multi def _drop_model_access(self): for sql_view in self: self.env["ir.model.access"].search( [("model_id", "=", sql_view.model_name)] ).unlink() - @api.multi def _drop_model_and_fields(self): for sql_view in self: if sql_view.rule_id: @@ -591,7 +560,6 @@ class BiSQLView(models.Model): if sql_view.model_id: sql_view.model_id.with_context(_force_unlink=True).unlink() - @api.multi def _hook_executed_request(self): self.ensure_one() req = ( @@ -609,12 +577,10 @@ class BiSQLView(models.Model): self._log_execute(req) return self.env.cr.fetchall() - @api.multi def _prepare_request_check_execution(self): self.ensure_one() return "CREATE VIEW {} AS ({});".format(self.view_name, self.query) - @api.multi def _prepare_request_for_execution(self): self.ensure_one() query = ( @@ -635,7 +601,6 @@ class BiSQLView(models.Model): self.materialized_text, self.view_name, query, ) - @api.multi def _check_execution(self): """Ensure that the query is valid, trying to execute it. a non materialized view is created for this check. @@ -689,7 +654,6 @@ class BiSQLView(models.Model): ) return sql_views._refresh_materialized_view() - @api.multi def _refresh_materialized_view(self): for sql_view in self.filtered(lambda x: x.is_materialized): req = "REFRESH {} VIEW {}".format( @@ -702,7 +666,6 @@ class BiSQLView(models.Model): # datetime of the materialized view sql_view.action_id.name = sql_view._prepare_action_name() - @api.multi def _refresh_size(self): for sql_view in self: req = "SELECT pg_size_pretty(pg_total_relation_size('%s'));" % ( @@ -711,7 +674,6 @@ class BiSQLView(models.Model): self._log_execute(req) sql_view.size = self.env.cr.fetchone()[0] - @api.multi def button_preview_sql_expression(self): self.button_validate_sql_expression() res = self._execute_sql_request() diff --git a/bi_sql_editor/models/bi_sql_view_field.py b/bi_sql_editor/models/bi_sql_view_field.py index 3a87cad81..56fd0e4a6 100644 --- a/bi_sql_editor/models/bi_sql_view_field.py +++ b/bi_sql_editor/models/bi_sql_view_field.py @@ -116,7 +116,6 @@ class BiSQLViewField(models.Model): # Constrains Section @api.constrains("is_index") - @api.multi def _check_index_materialized(self): for rec in self.filtered(lambda x: x.is_index): if not rec.bi_sql_view_id.is_materialized: @@ -125,7 +124,6 @@ class BiSQLViewField(models.Model): ) # Compute Section - @api.multi def _compute_index_name(self): for sql_field in self: sql_field.index_name = "{}_{}".format( @@ -133,7 +131,6 @@ class BiSQLViewField(models.Model): ) # Overload Section - @api.multi def create(self, vals): field_without_prefix = vals["name"][2:] # guess field description @@ -193,7 +190,6 @@ class BiSQLViewField(models.Model): return res - @api.multi def _prepare_model_field(self): self.ensure_one() return { @@ -207,7 +203,6 @@ class BiSQLViewField(models.Model): or False, } - @api.multi def _prepare_tree_field(self): self.ensure_one() res = "" @@ -217,7 +212,6 @@ class BiSQLViewField(models.Model): ) return res - @api.multi def _prepare_graph_field(self): self.ensure_one() res = "" @@ -225,7 +219,6 @@ class BiSQLViewField(models.Model): res = """""".format(self.name, self.graph_type) return res - @api.multi def _prepare_pivot_field(self): self.ensure_one() res = "" @@ -233,7 +226,6 @@ class BiSQLViewField(models.Model): res = """""".format(self.name, self.graph_type) return res - @api.multi def _prepare_search_field(self): self.ensure_one() res = "" @@ -241,7 +233,6 @@ class BiSQLViewField(models.Model): res = """""".format(self.name) return res - @api.multi def _prepare_search_filter_field(self): self.ensure_one() res = "" diff --git a/bi_sql_editor/tests/test_bi_sql_view.py b/bi_sql_editor/tests/test_bi_sql_view.py index 6ecedd5c1..b40f53315 100644 --- a/bi_sql_editor/tests/test_bi_sql_view.py +++ b/bi_sql_editor/tests/test_bi_sql_view.py @@ -69,10 +69,10 @@ class TestBiSqlViewEditor(SingleTransactionCase): def test_security(self): with self.assertRaises(AccessError): - self.bi_sql_view.sudo(self.no_bi_user.id).search( + self.bi_sql_view.with_user(self.no_bi_user.id).search( [("name", "=", "Partners View 2")] ) - bi = self.bi_sql_view.sudo(self.bi_user.id).search( + bi = self.bi_sql_view.with_user(self.bi_user.id).search( [("name", "=", "Partners View 2")] ) self.assertEqual( diff --git a/bi_sql_editor/views/action.xml b/bi_sql_editor/views/action.xml index 2e7e9ce2e..852770767 100644 --- a/bi_sql_editor/views/action.xml +++ b/bi_sql_editor/views/action.xml @@ -9,7 +9,6 @@ License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). SQL Views ir.actions.act_window bi.sql.view - form tree,form diff --git a/oca_dependencies.txt b/oca_dependencies.txt new file mode 100644 index 000000000..9c8c9172c --- /dev/null +++ b/oca_dependencies.txt @@ -0,0 +1 @@ +server-tools diff --git a/setup/bi_sql_editor/odoo/addons/bi_sql_editor b/setup/bi_sql_editor/odoo/addons/bi_sql_editor new file mode 120000 index 000000000..f07a4a624 --- /dev/null +++ b/setup/bi_sql_editor/odoo/addons/bi_sql_editor @@ -0,0 +1 @@ +../../../../bi_sql_editor \ No newline at end of file diff --git a/setup/bi_sql_editor/setup.py b/setup/bi_sql_editor/setup.py new file mode 100644 index 000000000..28c57bb64 --- /dev/null +++ b/setup/bi_sql_editor/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)