0001-csv-remove-BOM-if-exists-8727.patch
passerelle/apps/csvdatasource/models.py | ||
---|---|---|
56 | 56 |
if not content: |
57 | 57 |
return None |
58 | 58 | |
59 |
# remove BOM |
|
60 |
content = content.decode('utf-8-sig').encode('utf-8') |
|
61 | ||
59 | 62 |
dialect = csv.Sniffer().sniff(content[:1024]) |
60 | 63 |
reader = csv.reader(content.splitlines(), dialect) |
61 | 64 |
tests/test_csv_datasource.py | ||
---|---|---|
27 | 27 |
216352;38;Dupont;Benoît;H |
28 | 28 |
""" |
29 | 29 | |
30 |
data_bom = data.decode('utf-8').encode('utf-8-sig') |
|
31 | ||
30 | 32 |
from csvdatasource.models import CsvDataSource |
31 | 33 | |
32 | 34 |
pytestmark = pytest.mark.django_db |
... | ... | |
105 | 107 |
assert 'id' in item |
106 | 108 |
assert 'text' in item |
107 | 109 |
assert filter_criteria.lower() in item['text'].decode('utf-8') |
110 | ||
111 |
def test_data_bom(): |
|
112 |
csv = CsvDataSource.objects.create(csv_file=File(StringIO(data_bom), 'data.csv'), |
|
113 |
columns_keynames='fam,id,, text,sexe ') |
|
114 |
result = csv.get_data('Eliot') |
|
115 |
assert result[0] == {'id': '69981', 'text': 'Eliot', |
|
116 |
'fam': '121', 'sexe': 'H'} |
|
108 |
- |