summaryrefslogtreecommitdiff
path: root/addons/base_import/models.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-04-25 14:43:44 +0200
committerChristophe Simonis <chs@odoo.com>2016-04-25 14:43:44 +0200
commitbb8f0f1fc3d0f5574938019ca69cc917a55e7962 (patch)
treea6662094bb9c307981461fdb9872195032f2da06 /addons/base_import/models.py
parent9ad6a9df6e5e5654bc98c4c655848404b4e946b2 (diff)
parent4d337f72ed59d1e5260fa2bb4f3d238e6ed11415 (diff)
[MERGE] forward port of branch saas-9 up to 4d337f7
Diffstat (limited to 'addons/base_import/models.py')
-rw-r--r--addons/base_import/models.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/addons/base_import/models.py b/addons/base_import/models.py
index 91d54b64588..2703dd218aa 100644
--- a/addons/base_import/models.py
+++ b/addons/base_import/models.py
@@ -250,15 +250,21 @@ class ir_import(orm.TransientModel):
:throws csv.Error: if an error is detected during CSV parsing
:throws UnicodeDecodeError: if ``options.encoding`` is incorrect
"""
+ csv_data = record.file
+
+ # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet
+ encoding = options.get('encoding', 'utf-8')
+ if encoding != 'utf-8':
+ # csv module expect utf-8, see http://docs.python.org/2/library/csv.html
+ csv_data = csv_data.decode(encoding).encode('utf-8')
+
csv_iterator = csv.reader(
- StringIO(record.file),
+ StringIO(csv_data),
quotechar=str(options['quoting']),
delimiter=str(options['separator']))
- # TODO: guess encoding with chardet? Or https://github.com/aadsm/jschardet
- encoding = options.get('encoding', 'utf-8')
return (
- [item.decode(encoding) for item in row]
+ [item.decode('utf-8') for item in row]
for row in csv_iterator
if any(x for x in row if x.strip())
)