From d863164678f7b3a240d8359206f32bd90f09e3d8 Mon Sep 17 00:00:00 2001 From: Karnav Sojitra <kaso@odoo.com> Date: Fri, 11 Aug 2023 07:25:14 +0000 Subject: [PATCH] [FIX] tools: raise validation error while invalid expression When the user tries to modify the view with an invalid xpath expression, an XPathSyntaxError traceback will appear. Steps to produce: 1. Install the Accounting module. 2. Settings > Technical > UI > Views > Open any view 3. Invalidate expr syntax and try to save, thus an error will be generated. Error: XPathSyntaxError: Invalid expression This commit handles XPathSyntaxError by raising ValidationError instead of a traceback. sentry-4377014622 closes odoo/odoo#136523 X-original-commit: a0cf5d9da5c1704de6c29808fa74edd859c71cd2 Signed-off-by: Achraf Ben Azzouz (abz) <abz@odoo.com> --- odoo/addons/base/i18n/base.pot | 6 ++++++ odoo/tools/template_inheritance.py | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/odoo/addons/base/i18n/base.pot b/odoo/addons/base/i18n/base.pot index 0108bdc26c67..74c51559e257 100644 --- a/odoo/addons/base/i18n/base.pot +++ b/odoo/addons/base/i18n/base.pot @@ -13011,6 +13011,12 @@ msgstr "" msgid "Invalid 'group by' parameter" msgstr "" +#. module: base +#: code:addons/template_inheritance.py:0 +#, python-format +msgid "Invalid Expression while parsing xpath %r" +msgstr "" + #. module: base #: code:addons/base/models/ir_default.py:0 #, python-format diff --git a/odoo/tools/template_inheritance.py b/odoo/tools/template_inheritance.py index 77f0057cd40b..b2e9a171161c 100644 --- a/odoo/tools/template_inheritance.py +++ b/odoo/tools/template_inheritance.py @@ -8,6 +8,7 @@ import re from odoo.tools.translate import _ from odoo.tools import SKIPPED_ELEMENT_TYPES, html_escape +from odoo.exceptions import ValidationError _logger = logging.getLogger(__name__) RSTRIP_REGEXP = re.compile(r'\n[ \t]*$') @@ -74,9 +75,8 @@ def locate_node(arch, spec): expr = spec.get('expr') try: xPath = etree.ETXPath(expr) - except etree.XPathSyntaxError: - _logger.error("XPathSyntaxError while parsing xpath %r", expr) - raise + except etree.XPathSyntaxError as e: + raise ValidationError(_("Invalid Expression while parsing xpath %r", expr)) from e nodes = xPath(arch) return nodes[0] if nodes else None elif spec.tag == 'field': -- GitLab