diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py
index 8d9bd97adf6..39a7bb804b1 100644
--- a/openerp/addons/base/ir/ir_qweb.py
+++ b/openerp/addons/base/ir/ir_qweb.py
@@ -482,20 +482,20 @@ class HTMLConverter(osv.AbstractModel):
def value_to_html(self, cr, uid, value, column, options=None):
return value
-class BinaryConverter(osv.AbstractModel):
- _name = 'ir.qweb.field.binary'
+class ImageConverter(osv.AbstractModel):
+ _name = 'ir.qweb.field.image'
_inherit = 'ir.qweb.field'
def value_to_html(self, cr, uid, value, column, options=None):
try:
image = Image.open(cStringIO.StringIO(value.decode('base64')))
+ image.verify()
except IOError:
raise ValueError("Non-image binary fields can not be converted to HTML")
- try: image.verify()
except: # no idea what "suitable exceptions" are
raise ValueError("Invalid image content")
- return ('
' % (Image.MIME[image.format], value))
+ return '
' % (Image.MIME[image.format], value)
def get_field_type(column, options):
""" Gets a t-field's effective type from the field's column and its options
diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv
index 8003579b2ae..dcb56f93f7c 100644
--- a/openerp/addons/base/security/ir.model.access.csv
+++ b/openerp/addons/base/security/ir.model.access.csv
@@ -117,4 +117,4 @@ access_ir_qweb_field_text,access_ir_qweb_field_text,model_ir_qweb_field_text,,0,
access_ir_qweb_field_selection,access_ir_qweb_field_selection,model_ir_qweb_field_selection,,0,0,0,0
access_ir_qweb_field_many2one,access_ir_qweb_field_many2one,model_ir_qweb_field_many2one,,0,0,0,0
access_ir_qweb_field_html,access_ir_qweb_field_html,model_ir_qweb_field_html,,0,0,0,0
-access_ir_qweb_field_binary,access_ir_qweb_field_binary,model_ir_qweb_field_binary,,0,0,0,0
+access_ir_qweb_field_image,access_ir_qweb_field_image,model_ir_qweb_field_image,,0,0,0,0
diff --git a/openerp/tests/addons/test_converter/tests/test_html.py b/openerp/tests/addons/test_converter/tests/test_html.py
index 7f2713b2761..342864df044 100644
--- a/openerp/tests/addons/test_converter/tests/test_html.py
+++ b/openerp/tests/addons/test_converter/tests/test_html.py
@@ -108,28 +108,33 @@ class TestHTMLExport(common.TransactionCase):
value = converter(Sub.browse(self.cr, self.uid, id1))
self.assertEqual(value, "Fo<b>o</b>")
- def test_binary(self):
- converter = self.get_converter('binary')
+ def test_image(self):
+ column = self.get_column('binary')
+ converter = self.registry('ir.qweb.field.image')
+
with open(os.path.join(directory, 'test_vectors', 'image'), 'rb') as f:
content = f.read()
- value = converter(content.encode('base64'))
- self.assertEqual(
- value, '
' % (
- content.encode('base64')
- ))
+ value = converter.value_to_html(
+ self.cr, self.uid, content.encode('base64'), column)
+ self.assertEqual(
+ value, '
' % (
+ content.encode('base64')
+ ))
with open(os.path.join(directory, 'test_vectors', 'pdf'), 'rb') as f:
content = f.read()
- with self.assertRaises(ValueError):
- converter(content.encode('base64'))
+ with self.assertRaises(ValueError):
+ converter.value_to_html(
+ self.cr, self.uid, 'binary', content.encode('base64'), column)
with open(os.path.join(directory, 'test_vectors', 'pptx'), 'rb') as f:
content = f.read()
- with self.assertRaises(ValueError):
- converter(content.encode('base64'))
+ with self.assertRaises(ValueError):
+ converter.value_to_html(
+ self.cr, self.uid, 'binary', content.encode('base64'), column)
def test_selection(self):
[record] = self.Model.browse(self.cr, self.uid, [self.Model.create(self.cr, self.uid, {