Browse Source

[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.
pull/200/head
Loïc Faure-Lacroix 6 years ago
committed by Benjamin
parent
commit
1059bf6b3e
  1. 2
      account_bank_statement_import_ofx/wizard/account_bank_statement_import.py

2
account_bank_statement_import_ofx/wizard/account_bank_statement_import.py

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

Loading…
Cancel
Save