return '<img src="data:%s;base64,%s">' % (Image.MIME[image.format], value)
+class CurrencyConverter(osv.AbstractModel):
+ """ ``currency`` converter, has a mandatory option ``currency``.
+
+ The currency field is a (float) value, the linked ``currency`` is an m2o
+ to a ``res.currency`` indicating how to format the field.
+ """
+ _name = 'ir.qweb.field.currency'
+ _inherit = 'ir.qweb.field'
+
+ def record_to_html(self, cr, uid, field_name, record, column, options):
+ return u'<span class="oe_currency_value">{0}</span> {1}'.format(
+ record[field_name],
+ record[options['currency']].symbol)
+
def get_field_type(column, options):
""" Gets a t-field's effective type from the field's column and its options
"""
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_converter_model,access_converter_model,model_test_converter_test_model,,1,1,1,1
access_test_converter_test_model_sub,access_test_converter_test_model_sub,model_test_converter_test_model_sub,,1,1,1,1
+access_test_converter_currency,access_test_converter_currency,model_test_converter_currency,,1,1,1,1
# -*- encoding: utf-8 -*-
+import json
import os
+import xml.dom.minidom
from openerp.tests import common
directory = os.path.dirname(__file__)
+impl = xml.dom.minidom.getDOMImplementation()
+doc = impl.createDocument(None, None, None)
class TestExport(common.TransactionCase):
_model = None
value = converter(42.01234)
self.assertEqual(value, '42.01')
+class TestCurrencyExport(TestExport):
+ _model = 'test_converter.currency'
+
+ def setUp(self):
+ super(TestCurrencyExport, self).setUp()
+ self.Currency = self.registry('res.currency')
+
+ def create(self, model, context=None, **values):
+ return model.browse(
+ self.cr, self.uid,
+ model.create(self.cr, self.uid, values, context=context),
+ context=context)
+
+ def convert(self, obj):
+ converter = self.registry('ir.qweb.field.currency')
+ options = {'widget': 'currency', 'currency': 'currency_id'}
+ converted = converter.to_html(
+ self.cr, self.uid, 'value', obj, options,
+ doc.createElement('span'),
+ {'field': 'obj.value', 'field-options': json.dumps(options)},
+ '', {'obj': obj})
+ return converted
+
+ def test_currency_post(self):
+ currency = self.create(self.Currency, name="Test", symbol=u"test")
+ obj = self.create(self.Model, value=0.12, currency_id=currency.id)
+
+ converted = self.convert(obj)
+
+ self.assertEqual(
+ converted,
+ '<span data-oe-model="{obj._model._name}" data-oe-id="{obj.id}" '
+ 'data-oe-field="value" data-oe-type="currency" '
+ 'data-oe-translate="0" data-oe-expression="obj.value">'
+ '<span class="oe_currency_value">0.12</span> '
+ '{symbol}</span>'.format(
+ obj=obj,
+ symbol=currency.symbol.encode('utf-8')
+ ),)
+
class TestTextExport(TestBasicExport):
def test_text(self):
converter = self.get_converter('text')
input = '<span>span</span>'
value = converter(input)
self.assertEqual(value, input)
+
# o2m, m2m?
# reference?