diff --git a/addons/base_import/controllers.py b/addons/base_import/controllers.py index bc014cd8265..d978730b482 100644 --- a/addons/base_import/controllers.py +++ b/addons/base_import/controllers.py @@ -15,7 +15,7 @@ class ImportController(openerpweb.Controller): import_id = int(import_id) written = req.session.model('base_import.import').write(import_id, { - 'file': base64.b64encode(file.read()), + 'file': file.read(), 'file_name': file.filename, 'file_type': file.content_type, }, req.session.eval_context(req.context)) diff --git a/addons/base_import/models.py b/addons/base_import/models.py index 2e44c686fd7..f340b582eaa 100644 --- a/addons/base_import/models.py +++ b/addons/base_import/models.py @@ -1,10 +1,7 @@ -import base64 -import codecs import csv import itertools import logging import operator -import random try: from cStringIO import StringIO @@ -24,7 +21,8 @@ class ir_import(orm.TransientModel): _columns = { 'res_model': fields.char('Model', size=64), - 'file': fields.binary('File'), + 'file': fields.binary( + 'File', help="File to check and/or import, raw binary (not base64)"), 'file_name': fields.char('File Name', size=None), 'file_mime': fields.char('File Type', size=None), } @@ -123,7 +121,7 @@ class ir_import(orm.TransientModel): :throws UnicodeDecodeError: if ``options.encoding`` is incorrect """ csv_iterator = csv.reader( - StringIO(base64.b64decode(record.file)), + StringIO(record.file), quotechar=options['quote'], delimiter=options['separator']) csv_nonempty = itertools.ifilter(None, csv_iterator) @@ -238,8 +236,8 @@ class ir_import(orm.TransientModel): # even if it yields non-printable characters. This is # in case of UnicodeDecodeError (or csv.Error # compounded with UnicodeDecodeError) - 'preview': base64.b64decode(record.file)[:ERROR_PREVIEW_BYTES]\ - .decode('iso-8859-1'), + 'preview': record.file[:ERROR_PREVIEW_BYTES] + .decode( 'iso-8859-1'), } def _convert_import_data(self, record, fields, options, context=None): diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py index e2b61c1928b..420140cd2ac 100644 --- a/addons/base_import/tests/test_cases.py +++ b/addons/base_import/tests/test_cases.py @@ -167,15 +167,12 @@ class test_match_headers_multiple(TransactionCase): }) ) -import base64, csv class test_preview(TransactionCase): def make_import(self): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'res.users', - 'file': base64.b64encode( - u"로그인,언어\n".encode('euc_kr'), - "bob,1\n"), + 'file': u"로그인,언어\nbob,1\n".encode('euc_kr'), }) return Import, id @@ -211,10 +208,10 @@ class test_preview(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) result = Import.parse_preview(self.cr, self.uid, id, { @@ -248,10 +245,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -272,10 +269,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' 'bar,3,4\n' - 'qux,5,6\n') + 'qux,5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -296,10 +293,10 @@ class test_convert_import_data(TransactionCase): Import = self.registry('base_import.import') id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' + 'file': 'name,Some Value,Counter\n' 'foo,1,2\n' ',3,\n' - ',5,6\n') + ',5,6\n' }) record = Import.browse(self.cr, self.uid, id) data, fields = Import._convert_import_data( @@ -317,8 +314,8 @@ class test_convert_import_data(TransactionCase): id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' - 'foo,1,2\n') + 'file': 'name,Some Value,Counter\n' + 'foo,1,2\n' }) record = Import.browse(self.cr, self.uid, id) @@ -333,8 +330,8 @@ class test_convert_import_data(TransactionCase): id = Import.create(self.cr, self.uid, { 'res_model': 'base_import.tests.models.preview', - 'file': base64.b64encode('name,Some Value,Counter\n' - 'foo,1,2\n') + 'file': 'name,Some Value,Counter\n' + 'foo,1,2\n' }) record = Import.browse(self.cr, self.uid, id)