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'],