diff --git a/smartmin/models.py b/smartmin/models.py index 1051776..576942d 100644 --- a/smartmin/models.py +++ b/smartmin/models.py @@ -104,7 +104,7 @@ def get_import_file_headers(cls, csv_file): break reader.close() - reader = open(filename.name, "rU") + reader = open(filename.name, "rU", encoding='utf-8-sig') def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs): csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs) @@ -300,7 +300,7 @@ def import_raw_csv(cls, filename, user, import_params, log=None, import_results= break reader.close() - reader = open(filename.name, "rU") + reader = open(filename.name, "rU", encoding='utf-8-sig') def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs): csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs) diff --git a/test_runner/blog/test_files/bom_import.csv b/test_runner/blog/test_files/bom_import.csv new file mode 100644 index 0000000..6edb414 --- /dev/null +++ b/test_runner/blog/test_files/bom_import.csv @@ -0,0 +1,2 @@ +URN:tel,Name,Field:email-address +12065551212,Fred,fred@gmail.com \ No newline at end of file diff --git a/test_runner/blog/tests.py b/test_runner/blog/tests.py index d34228a..c3f2f51 100644 --- a/test_runner/blog/tests.py +++ b/test_runner/blog/tests.py @@ -463,6 +463,9 @@ def test_get_import_file_headers(self): with open('test_runner/blog/test_files/posts.csv', 'rb') as open_file: self.assertEqual(Post.get_import_file_headers(open_file), ['title', 'body', 'order', 'tags']) + with open('test_runner/blog/test_files/bom_import.csv', 'rb') as open_file: + self.assertEqual(Post.get_import_file_headers(open_file), ['urn:tel', 'name', 'field:email-address']) + def test_csv_import(self): with self.settings(CELERY_ALWAYS_EAGER=True, CELERY_RESULT_BACKEND='cache', CELERY_CACHE_BACKEND='memory'): import_url = reverse('blog.post_csv_import')