changeset bbae9fd78f9e in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=bbae9fd78f9e
description:
        Use locale format for data export and import

        issue8196
        review255151002
diffstat:

 CHANGELOG                        |   1 +
 trytond/model/modelstorage.py    |  20 ++++++++++++++------
 trytond/tests/test_importdata.py |  18 +++++++++++++++++-
 3 files changed, 32 insertions(+), 7 deletions(-)

diffs (103 lines):

diff -r 6bee5ded03ca -r bbae9fd78f9e CHANGELOG
--- a/CHANGELOG Thu Mar 28 12:26:36 2019 +0100
+++ b/CHANGELOG Thu Mar 28 19:22:49 2019 +0100
@@ -1,3 +1,4 @@
+* Support import of native numeric, date and datetime data
 * Add day view on calendar
 * Raise NotImplementedError when setting Function field without setter
 * Add exports in view_toolbar_get
diff -r 6bee5ded03ca -r bbae9fd78f9e trytond/model/modelstorage.py
--- a/trytond/model/modelstorage.py     Thu Mar 28 12:26:36 2019 +0100
+++ b/trytond/model/modelstorage.py     Thu Mar 28 19:22:49 2019 +0100
@@ -834,13 +834,21 @@
                     elif field_type == 'numeric':
                         res = Decimal(value) if value else None
                     elif field_type == 'date':
-                        res = (datetime.datetime.strptime(value,
-                                '%Y-%m-%d').date()
-                            if value else None)
+                        if isinstance(value, datetime.date):
+                            res = value
+                        elif value:
+                            res = datetime.datetime.strptime(
+                                value, '%Y-%m-%d').date()
+                        else:
+                            res = None
                     elif field_type == 'datetime':
-                        res = (datetime.datetime.strptime(value,
-                                '%Y-%m-%d %H:%M:%S')
-                            if value else None)
+                        if isinstance(value, datetime.datetime):
+                            res = value
+                        elif value:
+                            res = datetime.datetime.strptime(
+                                value, '%Y-%m-%d %H:%M:%S')
+                        else:
+                            res = None
                     elif field_type == 'many2one':
                         res = get_many2one(this_field_def['relation'], value)
                     elif field_type == 'many2many':
diff -r 6bee5ded03ca -r bbae9fd78f9e trytond/tests/test_importdata.py
--- a/trytond/tests/test_importdata.py  Thu Mar 28 12:26:36 2019 +0100
+++ b/trytond/tests/test_importdata.py  Thu Mar 28 19:22:49 2019 +0100
@@ -1,8 +1,9 @@
 # -*- coding: utf-8 -*-
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
+import datetime
 import unittest
-from decimal import InvalidOperation
+from decimal import InvalidOperation, Decimal
 
 from trytond.model.exceptions import (
     RequiredValidationError, SelectionValidationError, ImportDataError)
@@ -55,6 +56,9 @@
             [['1']]), 1)
 
         self.assertEqual(Integer.import_data(['integer'],
+            [[1]]), 1)
+
+        self.assertEqual(Integer.import_data(['integer'],
             [['-1']]), 1)
 
         self.assertEqual(Integer.import_data(['integer'],
@@ -117,6 +121,9 @@
             [['1.1']]), 1)
 
         self.assertEqual(Float.import_data(['float'],
+            [[1.1]]), 1)
+
+        self.assertEqual(Float.import_data(['float'],
             [['-1.1']]), 1)
 
         self.assertEqual(Float.import_data(['float'],
@@ -179,6 +186,9 @@
             [['1.1']]), 1)
 
         self.assertEqual(Numeric.import_data(['numeric'],
+            [[Decimal('1.1')]]), 1)
+
+        self.assertEqual(Numeric.import_data(['numeric'],
             [['-1.1']]), 1)
 
         self.assertEqual(Numeric.import_data(['numeric'],
@@ -271,6 +281,9 @@
             [['2010-01-01']]), 1)
 
         self.assertEqual(Date.import_data(['date'],
+            [[datetime.date(2019, 3, 13)]]), 1)
+
+        self.assertEqual(Date.import_data(['date'],
             [['']]), 1)
 
         self.assertEqual(Date.import_data(['date'],
@@ -289,6 +302,9 @@
             [['2010-01-01 12:00:00']]), 1)
 
         self.assertEqual(Datetime.import_data(['datetime'],
+            [[datetime.datetime(2019, 3, 13, 12, 0)]]), 1)
+
+        self.assertEqual(Datetime.import_data(['datetime'],
             [['']]), 1)
 
         self.assertEqual(Datetime.import_data(['datetime'],

Reply via email to