From 3c87025227567778c87698155e6d5b92aaf75771 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Tue, 22 Oct 2013 12:37:03 +0200 Subject: [PATCH] [FIX] Convert url attributes to their t-(src,href,action) counterparts on ir.ui.view#save() bzr revid: fme@openerp.com-20131022103703-cnydralsbt45i6eo --- addons/website/models/ir_ui_view.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index d6ad607fa3f..955ca4f758b 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -2,6 +2,7 @@ from lxml import etree, html from openerp.osv import osv, fields +from urlparse import urlparse class view(osv.osv): @@ -91,6 +92,23 @@ class view(osv.osv): arch = previous_arch return arch + def _normalize_urls(self, element): + attr = None + if element.tag == 'form': + attr = 'action' if 'action' in element.attrib else None + elif element.tag in ['a', 'link']: + attr = 'href' if 'href' in element.attrib else None + elif element.tag in ['frame', 'iframe', 'img', 'input', 'script']: + attr = 'src' if 'src' in element.attrib else None + if attr: + value = element.attrib[attr] + if not urlparse(value).scheme: + element.attrib.pop(attr) + element.attrib['t-' + attr] = value + for el in list(element): + self._normalize_urls(el) + return element + def save(self, cr, uid, res_id, value, xpath=None, context=None): """ Update a view section. The view section may embed fields to write @@ -103,6 +121,8 @@ class view(osv.osv): arch_section = html.fromstring( value, parser=html.HTMLParser(encoding='utf-8')) + self._normalize_urls(arch_section) + if xpath is None: # value is an embedded field on its own, not a view section self.save_embedded_field(cr, uid, arch_section, context=context)