[FIX] ensure all g_inner content is correctly encoded
authorXavier Morel <xmo@openerp.com>
Mon, 14 Jul 2014 11:42:35 +0000 (13:42 +0200)
committerXavier Morel <xmo@openerp.com>
Mon, 14 Jul 2014 11:44:37 +0000 (13:44 +0200)
fixes #1130

* provided `inner` data may or may not have been encoded
* `element.text` is either ascii-compatible `str` or `unicode` when
  non-ascii-compatible, which could force the decoding of utf8-encoded content
  during g_inner's join

openerp/addons/base/ir/ir_qweb.py

index 918f54f..741f8d4 100644 (file)
@@ -302,9 +302,9 @@ class QWeb(orm.AbstractModel):
         # qwebcontext: values
         # inner: optional innerXml
         if inner:
-            g_inner = inner
+            g_inner = inner.encode('utf-8') if isinstance(inner, unicode) else inner
         else:
-            g_inner = [] if element.text is None else [element.text]
+            g_inner = [] if element.text is None else [element.text.encode('utf-8')]
             for current_node in element.iterchildren(tag=etree.Element):
                 try:
                     g_inner.append(self.render_node(current_node, qwebcontext))