summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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