diff options
| author | Nicolas Lempereur <nle@odoo.com> | 2016-02-19 05:37:51 +0100 |
|---|---|---|
| committer | Nicolas Lempereur <nle@odoo.com> | 2016-02-24 11:26:16 +0100 |
| commit | d4e5019ec74231a92d7759b69c775e5e7577259b (patch) | |
| tree | f4021881e98790bad3a63e49c6be27a8af2ec3b7 /addons | |
| parent | 4162b8f5fa31cd76fa79c7e810f49b38733a16d4 (diff) | |
[FIX] web: csv export newline for text/html field
CSV export was added in f146e2a and since then newline were not
exported.
But new line should be allowed if the string is quoted by " characters
which is done in Odoo.
closes #11005
opw-667853
Diffstat (limited to 'addons')
| -rw-r--r-- | addons/base_import/tests/test_cases.py | 29 | ||||
| -rw-r--r-- | addons/web/controllers/main.py | 3 |
2 files changed, 30 insertions, 2 deletions
diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index 873d749d55a..2d53c47eee5 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -1,5 +1,9 @@ # -*- encoding: utf-8 -*- + +import csv +import io import unittest2 + from openerp.tests.common import TransactionCase from .. import models @@ -376,6 +380,31 @@ class test_convert_import_data(TransactionCase): record, [False, False, False], {'quoting': '"', 'separator': ',', 'headers': True,}) + def test_newline_import(self): + """ + Ensure importing keep newlines + """ + Import = self.registry('base_import.import') + output = io.BytesIO() + writer = csv.writer(output, quoting=csv.QUOTE_ALL) + + data_row = ("\tfoo\n\tbar", " \"hello\" \n\n 'world' ") + + writer.writerow(["name", "Some Value"]) + writer.writerow(data_row) + + + id = Import.create(self.cr, self.uid, { + 'res_model': 'base_import.tests.models.preview', + 'file': output.getvalue() + }) + record = Import.browse(self.cr, self.uid, id) + data, _ = Import._convert_import_data( + record, ['name', 'somevalue'], + {'quoting': '"', 'separator': ',', 'headers': True,}) + + self.assertItemsEqual(data, [data_row]) + class test_failures(TransactionCase): def test_big_attachments(self): """ diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7a06bd34f9d..7413159c9a3 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1475,8 +1475,7 @@ class CSVExport(ExportFormat, http.Controller): for data in rows: row = [] for d in data: - if isinstance(d, basestring): - d = d.replace('\n',' ').replace('\t',' ') + if isinstance(d, unicode): try: d = d.encode('utf-8') except UnicodeError: |
