From f39730e918bc85c770dfa6edd52394351d54d006 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Thu, 27 Sep 2012 12:34:52 +0200 Subject: [PATCH] [FIX] make conversion errors for floats and integers more predictable Python turns out to have changed the wording of the messages between 2.6 and 2.7 also, these messages need to be translatable *and* use the human-readable field name bzr revid: xmo@openerp.com-20120927103452-cvgv3e8dsvcvnics --- openerp/addons/base/ir/ir_fields.py | 14 ++++++++++++-- openerp/tests/addons/test_impex/tests/test_load.py | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/openerp/addons/base/ir/ir_fields.py b/openerp/addons/base/ir/ir_fields.py index 621dd93d469..ba6681bee15 100644 --- a/openerp/addons/base/ir/ir_fields.py +++ b/openerp/addons/base/ir/ir_fields.py @@ -100,10 +100,20 @@ class ir_fields_converter(orm.Model): return True def _str_to_integer(self, cr, uid, model, column, value, context=None): - return int(value) + try: + return int(value) + except ValueError: + raise ValueError( + _(u"'%s' does not seem to be an integer for field '%%(field)s'") + % value) def _str_to_float(self, cr, uid, model, column, value, context=None): - return float(value) + try: + return float(value) + except ValueError: + raise ValueError( + _(u"'%s' does not seem to be a number for field '%%(field)s'") + % value) def _str_to_char(self, cr, uid, model, column, value, context=None): return value diff --git a/openerp/tests/addons/test_impex/tests/test_load.py b/openerp/tests/addons/test_impex/tests/test_load.py index 72442963af5..032dd65ef07 100644 --- a/openerp/tests/addons/test_impex/tests/test_load.py +++ b/openerp/tests/addons/test_impex/tests/test_load.py @@ -275,7 +275,7 @@ class test_integer_field(ImporterCase): 'rows': {'from': 0, 'to': 0}, 'record': 0, 'field': 'value', - 'message': u"invalid literal for int() with base 10: 'zorglub'", + 'message': u"'zorglub' does not seem to be an integer for field 'unknown'", }]) class test_float_field(ImporterCase): @@ -344,7 +344,7 @@ class test_float_field(ImporterCase): 'rows': {'from': 0, 'to': 0}, 'record': 0, 'field': 'value', - 'message': u"invalid literal for float(): foobar", + 'message': u"'foobar' does not seem to be a number for field 'unknown'", }]) class test_string_field(ImporterCase):