summaryrefslogtreecommitdiff
path: root/addons/base_import_module
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-11-28 14:09:30 +0100
committerChristophe Simonis <chs@odoo.com>2017-01-03 13:12:17 +0100
commit1aad733dc4b4d9b4e69b0ef8236f5f20c5510d2d (patch)
treee9f9c7d8eecc39dde35b28ba7dba31d0d308b8f6 /addons/base_import_module
parentfc91feda3033f040b918fcfa854029d90c897f34 (diff)
[IMP] base_import_module: correct validation of custom views
Consider also imported and exported views when validating custom views.
Diffstat (limited to 'addons/base_import_module')
-rw-r--r--addons/base_import_module/models/__init__.py2
-rw-r--r--addons/base_import_module/models/ir_ui_view.py28
2 files changed, 30 insertions, 0 deletions
diff --git a/addons/base_import_module/models/__init__.py b/addons/base_import_module/models/__init__.py
index 02b8831509a..f03f6c5ce87 100644
--- a/addons/base_import_module/models/__init__.py
+++ b/addons/base_import_module/models/__init__.py
@@ -1,3 +1,5 @@
# -*- coding: utf-8 -*-
+# flake8: noqa
import ir_module
import base_import_module
+import ir_ui_view
diff --git a/addons/base_import_module/models/ir_ui_view.py b/addons/base_import_module/models/ir_ui_view.py
new file mode 100644
index 00000000000..af0b13bdfd1
--- /dev/null
+++ b/addons/base_import_module/models/ir_ui_view.py
@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from operator import itemgetter
+from openerp import api, models
+
+class IrUiView(models.Model):
+ _inherit = 'ir.ui.view'
+
+ @api.model
+ def _validate_custom_views(self, model):
+ # views from imported modules should be considered as custom views
+ result = super(IrUiView, self)._validate_custom_views(model)
+
+ self._cr.execute("""
+ SELECT max(v.id)
+ FROM ir_ui_view v
+ LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
+ LEFT JOIN ir_module_module m ON (m.name = md.module)
+ WHERE m.imported = true
+ AND v.model = %s
+ AND v.active = true
+ GROUP BY coalesce(v.inherit_id, v.id)
+ """, [model])
+
+ ids = map(itemgetter(0), self._cr.fetchall())
+ views = self.with_context(load_all_views=True).browse(ids)
+ return views._check_xml() and result