From 5de155ad98e9d21e5b526b76a8f0b77c066ab435 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 19 Sep 2013 11:25:46 +0200 Subject: [PATCH] [FIX] avoid losing non-meta attributes when converting t-fields back bzr revid: xmo@openerp.com-20130919092546-c7yr8e4kixh4ngta --- addons/website/tests/test_views.py | 12 ++++++++++++ addons/website/view.py | 9 ++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/addons/website/tests/test_views.py b/addons/website/tests/test_views.py index fbe40b783f8..8fc112899f6 100644 --- a/addons/website/tests/test_views.py +++ b/addons/website/tests/test_views.py @@ -80,6 +80,18 @@ class TestViewSaving(common.TransactionCase): h.SPAN({'t-field': 'bob'}) ) + def test_to_field_ref_keep_attributes(self): + View = self.registry('ir.ui.view') + + att = attrs(expression="bob", model="res.company", id=1, field="name") + att['id'] = "whop" + att['class'] = "foo bar" + embedded = h.SPAN("My Company", att) + + self.eq(View.to_field_ref(self.cr, self.uid, embedded, context=None), + h.SPAN({'t-field': 'bob', 'class': 'foo bar', 'id': 'whop'})) + + def test_replace_arch(self): replacement = h.P("Wheee") diff --git a/addons/website/view.py b/addons/website/view.py index 8d5fef42b23..8b3da581732 100644 --- a/addons/website/view.py +++ b/addons/website/view.py @@ -102,9 +102,12 @@ class view(osv.osv): }, context=context) def to_field_ref(self, cr, uid, el, context=None): - out = html.html_parser.makeelement(el.tag, attrib={ - 't-field': el.get('data-oe-expression'), - }) + # filter out meta-information inserted in the document + attributes = dict((k, v) for k, v in el.items() + if not k.startswith('data-oe-')) + attributes['t-field'] = el.get('data-oe-expression') + + out = html.html_parser.makeelement(el.tag, attrib=attributes) out.tail = el.tail return out