csv_import: display error message on bad encoding (#37374)
This commit is contained in:
parent
55ec200c40
commit
2936f25623
|
@ -120,7 +120,12 @@ class CsvImporter(object):
|
|||
|
||||
def parse_csv():
|
||||
try:
|
||||
dialect = csv.Sniffer().sniff(input_fd.read().encode('utf-8'))
|
||||
content = input_fd.read().encode('utf-8')
|
||||
except UnicodeDecodeError:
|
||||
self.error = Error('bad-encoding', _('Bad encoding'))
|
||||
return False
|
||||
try:
|
||||
dialect = csv.Sniffer().sniff(content)
|
||||
except csv.Error as e:
|
||||
self.error = Error('unknown-csv-dialect', _('Unknown CSV dialect: %s') % e)
|
||||
return False
|
||||
|
@ -137,7 +142,6 @@ class CsvImporter(object):
|
|||
input_fd = set_encoding(input_fd, encoding)
|
||||
if input_fd is None:
|
||||
return False
|
||||
|
||||
return parse_csv()
|
||||
|
||||
|
||||
|
|
|
@ -84,6 +84,12 @@ def test_unknown_csv_dialect_error(profile, user_csv_importer_factory):
|
|||
assert importer.errors == [Error('unknown-csv-dialect')]
|
||||
|
||||
|
||||
def test_bad_csv_encoding(profile):
|
||||
importer = CsvImporter()
|
||||
assert not importer.run(u'é'.encode('utf-8'), 'ascii')
|
||||
assert importer.error == Error('bad-encoding')
|
||||
|
||||
|
||||
def test_empty_header_row_error(profile, user_csv_importer_factory):
|
||||
importer = user_csv_importer_factory('\n1,2,3')
|
||||
assert not importer.run()
|
||||
|
|
Loading…
Reference in New Issue