From e19c6a5ead59c1197bc4d2cdd04d086519b1caf9 Mon Sep 17 00:00:00 2001 From: rde Date: Wed, 18 Oct 2017 16:48:28 +0200 Subject: [PATCH] [IMP] website: set viewid in frontend & save template for dispatch This commit is related to enterprise commit adding crm_track option to routes. Before this commit: We could not get template's name after dispatch() had been called. Indeed, it will remove the template name from the response (response.flatten()) to make it not considered as 'qweb' anymore (is_qweb()). In some case (e.g. website_crm_score), we still need the template's name later. (Eg: to retrieve the route's view being rendered and check if trackable or not) Add view-id in template, when main_object is not an ir_ui_view, it avoid to make extra rpc to get the view_id. this commit closes #20313 --- addons/website/views/website_templates.xml | 1 + odoo/addons/base/ir/ir_ui_view.py | 1 + odoo/http.py | 1 + 3 files changed, 3 insertions(+) diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index 38fde186043..d4ad09183d8 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -99,6 +99,7 @@ 'data-translatable': '1' if translatable else None, 'data-edit_translations': '1' if edit_translations else None, 'data-view-xmlid': xmlid if editable or translatable else None, + 'data-viewid': viewid if editable or translatable else None, 'data-main-object': repr(main_object) if editable or translatable else None, 'data-oe-company-name': res_company.name }"/> diff --git a/odoo/addons/base/ir/ir_ui_view.py b/odoo/addons/base/ir/ir_ui_view.py index 6853b5e2037..76fd9aea4c1 100644 --- a/odoo/addons/base/ir/ir_ui_view.py +++ b/odoo/addons/base/ir/ir_ui_view.py @@ -1078,6 +1078,7 @@ actual arch. datetime=datetime, relativedelta=relativedelta, xmlid=self.key, + viewid=self.id, ) return qcontext diff --git a/odoo/http.py b/odoo/http.py index 3da0379e551..d19190870c6 100644 --- a/odoo/http.py +++ b/odoo/http.py @@ -1219,6 +1219,7 @@ class Response(werkzeug.wrappers.Response): def set_default(self, template=None, qcontext=None, uid=None): self.template = template self.qcontext = qcontext or dict() + self.qcontext['response_template'] = self.template self.uid = uid # Support for Cross-Origin Resource Sharing if request.endpoint and 'cors' in request.endpoint.routing: