[ADD] float field digits handling

bzr revid: xmo@openerp.com-20130927113424-lt23wpzs7px7k6mc
This commit is contained in:
Xavier Morel 2013-09-27 13:34:24 +02:00
parent c741c0eeb1
commit e1f3f0566e
3 changed files with 31 additions and 1 deletions

View File

@ -464,9 +464,19 @@ class ir_fields_converter(orm.Model):
"""
return werkzeug.utils.escape(value), []
_html_from_char = _html_from_integer = _html_from_float = \
_html_from_char = _html_from_integer = \
_html_from_date = _html_from_datetime = _html_from_passthrough
def _html_from_float(self, cr, uid, model, column, value, context=None):
width, precision = column.digits or (None, None)
if precision is None:
fmt = '{value}'
else:
fmt = '{value:.{precision}f}'
return werkzeug.utils.escape(
fmt.format(value=value, width=width, precision=precision, )), []
def _html_from_text(self, cr, uid, model, column, value, context=None):
"""
Escapes the value and converts newlines to br. This is bullshit.

View File

@ -8,6 +8,7 @@ class test_model(orm.Model):
'char': fields.char(),
'integer': fields.integer(),
'float': fields.float(),
'numeric': fields.float(digits=(16, 2)),
'many2one': fields.many2one('test_converter.test_model.sub'),
'binary': fields.binary(),
'date': fields.date(),

View File

@ -45,6 +45,25 @@ class TestHTMLExport(common.TransactionCase):
self.assertEqual(value, "42.0")
self.assertEqual(warnings, [])
value, warnings = converter(42.0100)
self.assertEqual(value, "42.01")
self.assertEqual(warnings, [])
value, warnings = converter(42.01234)
self.assertEqual(value, "42.01234")
self.assertEqual(warnings, [])
def test_numeric(self):
converter = self.get_converter('numeric')
value, warnings = converter(42.0)
self.assertEqual(value, '42.00')
self.assertEqual(warnings, [])
value, warnings = converter(42.01234)
self.assertEqual(value, '42.01')
self.assertEqual(warnings, [])
def test_text(self):
converter = self.get_converter('text')