[IMP] un-b64 the import file field, use raw binary
bzr revid: xmo@openerp.com-20120830103215-trv5cjg9jvj8ano1
This commit is contained in:
@@ -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))
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user