[11.0 BUGFIX] Pass bytes to Ofxparse

The ofx files have the correct charset inside their headers and
trying to convert the file to StringIO using a particular encoding
is subject to failures when the file isn't exactly an ascii file.

For example a file encoded with CP1252 with accents on letters like
é or è will not be parser as utf-8 and will fail to load.

Also since OfxParse is supposed to receive a file handle, it is
correctly reading the file header and choosing the appropriate charset
to read the rest of the file. For this reason, pass the bytes as a
ByteIO that doesn't care about the encoding.
This commit is contained in:
Loïc Faure-Lacroix
2018-10-18 00:55:39 +03:00
committed by Alexis de Lattre
parent e802a0423f
commit f462023706

View File

@@ -39,7 +39,7 @@ class AccountBankStatementImport(models.TransientModel):
if not OfxParser:
return False
try:
ofx = OfxParser.parse(io.StringIO(data_file.decode('utf-8')))
ofx = OfxParser.parse(io.BytesIO(data_file))
except Exception as e:
_logger.debug(e)
return False