changeset 6d0ab34370e0 in trytond:5.2
details: https://hg.tryton.org/trytond?cmd=changeset;node=6d0ab34370e0
description:
Import zero value as non null value
issue8658
review282121004
(grafted from a0dfafa0c039cec82942302179826b6552bc1e61)
diffstat:
trytond/model/modelstorage.py | 21 ++++++++++++++++++---
trytond/tests/test_importdata.py | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 57 insertions(+), 3 deletions(-)
diffs (138 lines):
diff -r 18c601b10b13 -r 6d0ab34370e0 trytond/model/modelstorage.py
--- a/trytond/model/modelstorage.py Wed Sep 11 23:49:34 2019 +0200
+++ b/trytond/model/modelstorage.py Tue Sep 17 23:12:51 2019 +0200
@@ -857,11 +857,26 @@
else:
res = bool(int(value))
elif field_type == 'integer':
- res = int(value) if value else None
+ if isinstance(value, int):
+ res = value
+ elif value:
+ res = int(value)
+ else:
+ res = None
elif field_type == 'float':
- res = float(value) if value else None
+ if isinstance(value, float):
+ res = value
+ elif value:
+ res = float(value)
+ else:
+ res = None
elif field_type == 'numeric':
- res = Decimal(value) if value else None
+ if isinstance(value, Decimal):
+ res = value
+ elif value:
+ res = Decimal(value)
+ else:
+ res = None
elif field_type == 'date':
if isinstance(value, datetime.date):
res = value
diff -r 18c601b10b13 -r 6d0ab34370e0 trytond/tests/test_importdata.py
--- a/trytond/tests/test_importdata.py Wed Sep 11 23:49:34 2019 +0200
+++ b/trytond/tests/test_importdata.py Tue Sep 17 23:12:51 2019 +0200
@@ -56,6 +56,9 @@
[['1']]), 1)
self.assertEqual(Integer.import_data(['integer'],
+ [[0]]), 1)
+
+ self.assertEqual(Integer.import_data(['integer'],
[[1]]), 1)
self.assertEqual(Integer.import_data(['integer'],
@@ -79,6 +82,9 @@
self.assertEqual(Integer.import_data(['integer'],
[['0']]), 1)
+ self.assertEqual(Integer.import_data(['integer'],
+ [[None]]), 1)
+
@with_transaction()
def test_integer_required(self):
'Test required integer'
@@ -111,6 +117,13 @@
self.assertEqual(IntegerRequired.import_data(['integer'],
[['0']]), 1)
+ self.assertEqual(IntegerRequired.import_data(['integer'],
+ [[0]]), 1)
+
+ with self.assertRaises(RequiredValidationError):
+ IntegerRequired.import_data(['integer'], [[None]])
+ transaction.rollback()
+
@with_transaction()
def test_float(self):
'Test float'
@@ -121,6 +134,9 @@
[['1.1']]), 1)
self.assertEqual(Float.import_data(['float'],
+ [[0.0]]), 1)
+
+ self.assertEqual(Float.import_data(['float'],
[[1.1]]), 1)
self.assertEqual(Float.import_data(['float'],
@@ -144,6 +160,9 @@
self.assertEqual(Float.import_data(['float'],
[['0.0']]), 1)
+ self.assertEqual(Float.import_data(['float'],
+ [[None]]), 1)
+
@with_transaction()
def test_float_required(self):
'Test required float'
@@ -176,6 +195,13 @@
self.assertEqual(FloatRequired.import_data(['float'],
[['0.0']]), 1)
+ self.assertEqual(FloatRequired.import_data(['float'],
+ [[0.0]]), 1)
+
+ with self.assertRaises(RequiredValidationError):
+ FloatRequired.import_data(['float'], [[None]])
+ transaction.rollback()
+
@with_transaction()
def test_numeric(self):
'Test numeric'
@@ -186,6 +212,9 @@
[['1.1']]), 1)
self.assertEqual(Numeric.import_data(['numeric'],
+ [[Decimal('0.0')]]), 1)
+
+ self.assertEqual(Numeric.import_data(['numeric'],
[[Decimal('1.1')]]), 1)
self.assertEqual(Numeric.import_data(['numeric'],
@@ -209,6 +238,9 @@
self.assertEqual(Numeric.import_data(['numeric'],
[['0.0']]), 1)
+ self.assertEqual(Numeric.import_data(['numeric'],
+ [[None]]), 1)
+
@with_transaction()
def test_numeric_required(self):
'Test required numeric'
@@ -241,6 +273,13 @@
self.assertEqual(NumericRequired.import_data(['numeric'],
[['0.0']]), 1)
+ self.assertEqual(NumericRequired.import_data(['numeric'],
+ [[Decimal('0.0')]]), 1)
+
+ with self.assertRaises(RequiredValidationError):
+ NumericRequired.import_data(['numeric'], [[None]])
+ transaction.rollback()
+
@with_transaction()
def test_char(self):
'Test char'