From 9a98a4d60e36ea7d9f29ea52a1524501ebff84de Mon Sep 17 00:00:00 2001 From: Martin Geubelle Date: Mon, 13 Aug 2018 15:01:22 +0200 Subject: [PATCH] [IMP] base: search template view based on `key` in addition to xml_id In Studio, users can create views, reports, etc. which do not have an xml_id (no record in 'ir.model.data' from import/install). After this modification, the template can use the t-call using a readable key on newly created views. --- addons/web_editor/models/ir_ui_view.py | 2 +- odoo/addons/base/models/ir_ui_view.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/web_editor/models/ir_ui_view.py b/addons/web_editor/models/ir_ui_view.py index 37228224971..612abc1596a 100644 --- a/addons/web_editor/models/ir_ui_view.py +++ b/addons/web_editor/models/ir_ui_view.py @@ -128,7 +128,7 @@ class IrUiView(models.Model): @api.model def _view_obj(self, view_id): if isinstance(view_id, pycompat.string_types): - return self.env.ref(view_id) + return self.search([('key', '=', view_id)]) 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 569c33ac92b..11a8fdb9a12 100644 --- a/odoo/addons/base/models/ir_ui_view.py +++ b/odoo/addons/base/models/ir_ui_view.py @@ -1126,7 +1126,8 @@ actual arch. return template if '.' not in template: raise ValueError('Invalid template id: %r' % template) - return self.env['ir.model.data'].xmlid_to_res_id(template, raise_if_not_found=True) + view = self.search([('key', '=', template)]) + 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): """ Deprecated, use `clear_caches` instead. """