mirror of
https://github.com/OCA/account-reconcile.git
synced 2025-01-20 12:27:39 +02:00
[FIX] account_statement_base_import: autodetect CSV file delimiter
This commit is contained in:
@@ -106,7 +106,7 @@ class FileParser(BankStatementImportParser):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _parse_csv(self, delimiter=';'):
|
def _parse_csv(self):
|
||||||
"""
|
"""
|
||||||
:return: list of dict from csv file (line/rows)
|
:return: list of dict from csv file (line/rows)
|
||||||
"""
|
"""
|
||||||
@@ -114,7 +114,7 @@ class FileParser(BankStatementImportParser):
|
|||||||
csv_file.write(self.filebuffer)
|
csv_file.write(self.filebuffer)
|
||||||
csv_file.flush()
|
csv_file.flush()
|
||||||
with open(csv_file.name, 'rU') as fobj:
|
with open(csv_file.name, 'rU') as fobj:
|
||||||
reader = UnicodeDictReader(fobj, delimiter=delimiter, fieldnames=self.fieldnames)
|
reader = UnicodeDictReader(fobj, fieldnames=self.fieldnames)
|
||||||
return list(reader)
|
return list(reader)
|
||||||
|
|
||||||
def _parse_xls(self):
|
def _parse_xls(self):
|
||||||
|
|||||||
@@ -22,7 +22,12 @@ import base64
|
|||||||
import csv
|
import csv
|
||||||
|
|
||||||
def UnicodeDictReader(utf8_data, **kwargs):
|
def UnicodeDictReader(utf8_data, **kwargs):
|
||||||
csv_reader = csv.DictReader(utf8_data, **kwargs)
|
sniffer = csv.Sniffer()
|
||||||
|
pos = utf8_data.tell()
|
||||||
|
sample_data = utf8_data.read(1024)
|
||||||
|
utf8_data.seek(pos)
|
||||||
|
dialect = sniffer.sniff(sample_data, delimiters=',;\t')
|
||||||
|
csv_reader = csv.DictReader(utf8_data, dialect=dialect, **kwargs)
|
||||||
for row in csv_reader:
|
for row in csv_reader:
|
||||||
yield dict([(key, unicode(value, 'utf-8')) for key, value in row.iteritems()])
|
yield dict([(key, unicode(value, 'utf-8')) for key, value in row.iteritems()])
|
||||||
|
|
||||||
@@ -210,4 +215,4 @@ def new_bank_statement_parser(parser_name, *args, **kwargs):
|
|||||||
if cls.parser_for(parser_name):
|
if cls.parser_for(parser_name):
|
||||||
return cls(parser_name, *args, **kwargs)
|
return cls(parser_name, *args, **kwargs)
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user