summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Perais (lpe) <lpe@odoo.com>2018-11-28 15:26:48 +0000
committerLucas Perais (lpe) <lpe@odoo.com>2018-11-28 15:26:48 +0000
commitc432667fbf2f9b833d7fde9010f558d19666ad2f (patch)
tree45c6ef245068dad6d41ccc22a5bf250883f01d11
parent293dbe267abe0a48f3f5f16e929d09bd0bc6198d (diff)
[FIX] base,web_editor: get_view_id should return singleton
Because of 9a98a4d60e36ea7d9f29ea52a1524501ebff84de and since the key of an ir.ui.view cannot be unique (multiwebsite), duplicating views made several parts of Odoo crash After this commit, we limit to one the views that are searched with their key Responsibility is given to the user to change the priority and/or the key in order to predict which view will be taken OPW 1913335,1913100,1913186,1913112,1913240 closes odoo/odoo#29105
-rw-r--r--addons/web_editor/models/ir_ui_view.py2
-rw-r--r--odoo/addons/base/models/ir_ui_view.py2
2 files changed, 2 insertions, 2 deletions
diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py
index 532e3de70d9..45211502f11 100644
--- a/addons/web_editor/models/ir_ui_view.py
+++ b/addons/web_editor/models/ir_ui_view.py
@@ -202,7 +202,7 @@ class IrUiView(models.Model):
@api.model
def _view_obj(self, view_id):
if isinstance(view_id, pycompat.string_types):
- return self.search([('key', '=', view_id)]) or self.env.ref(view_id)
+ return self.search([('key', '=', view_id)], limit=1) or self.env.ref(view_id)
elif isinstance(view_id, pycompat.integer_types):
return self.browse(view_id)
# assume it's already a view object (WTF?)
diff --git a/odoo/addons/base/models/ir_ui_view.py b/odoo/addons/base/models/ir_ui_view.py
index 2c49ee065b8..c46b9ba87d2 100644
--- a/odoo/addons/base/models/ir_ui_view.py
+++ b/odoo/addons/base/models/ir_ui_view.py
@@ -1179,7 +1179,7 @@ actual arch.
return template
if '.' not in template:
raise ValueError('Invalid template id: %r' % template)
- view = self.search([('key', '=', template)])
+ view = self.search([('key', '=', template)], limit=1)
return view and view.id or self.env['ir.model.data'].xmlid_to_res_id(template, raise_if_not_found=True)
def clear_cache(self):