csvdatasource: fix order on missing columns by using empty strings (#44044)
This commit is contained in:
parent
26931166d6
commit
3b4d90c918
|
@ -277,7 +277,7 @@ class CsvDataSource(BaseResource):
|
|||
try:
|
||||
return row[index]
|
||||
except IndexError:
|
||||
return None
|
||||
return ''
|
||||
|
||||
return [{caption: get_cell(row, index) for caption, index in zip(caption, indexes)} for row in rows]
|
||||
|
||||
|
|
|
@ -349,7 +349,7 @@ def test_missing_columns(client, setup):
|
|||
result = json_loads(resp.content)
|
||||
assert result['err'] == 0
|
||||
assert len(result['data']) == 21
|
||||
assert result['data'][-1] == {'lname': 'C', 'sex': None, 'id': 'B', 'fname': None, 'fam': 'A'}
|
||||
assert result['data'][-1] == {'lname': 'C', 'sex': '', 'id': 'B', 'fname': '', 'fam': 'A'}
|
||||
|
||||
|
||||
def test_unknown_sheet_name(client, setup):
|
||||
|
@ -553,6 +553,22 @@ def test_query_order(app, setup, filetype):
|
|||
row['prenom'].lower())
|
||||
|
||||
|
||||
def test_query_order_missing_column(app, setup):
|
||||
csvdata, url = setup(data=StringIO(data + '42;42;STOPHERE\n'))
|
||||
url = reverse('generic-endpoint', kwargs={
|
||||
'connector': 'csvdatasource',
|
||||
'slug': csvdata.slug,
|
||||
'endpoint': 'query/query-1_/',
|
||||
})
|
||||
query = Query(slug='query-1_', resource=csvdata, order='fname')
|
||||
query.save()
|
||||
response = app.get(url)
|
||||
assert response.json['err'] == 0
|
||||
assert isinstance(response.json['data'], list)
|
||||
assert response.json['data'] == sorted(response.json['data'], key=lambda row:
|
||||
row['fname'])
|
||||
|
||||
|
||||
def test_query_error(app, setup, filetype):
|
||||
csvdata, url = setup('id,whatever,nom,prenom,sexe', filename=filetype, data=get_file_content(filetype))
|
||||
url = reverse('generic-endpoint', kwargs={
|
||||
|
|
Loading…
Reference in New Issue