Prevent cells containing commas breaking downloads

If a cell in the original file contains a comma, it comes back as two
cells in the downloaded file.

The CSV writer has logic to deal with this. It seems to work a lot
better that just concatenating the columns with commas ourselves.
This commit is contained in:
Chris Hill-Scott
2018-03-06 15:11:59 +00:00
parent 8f40574c83
commit 35f523c957
2 changed files with 9 additions and 1 deletions

View File

@@ -175,7 +175,7 @@ def generate_notifications_csv(**kwargs):
notification['created_at'],
notification['updated_at']
]
yield ','.join(map(str, values)) + '\n'
yield Spreadsheet.from_rows([map(str, values)]).as_csv_data
if notifications_resp['links'].get('next'):
kwargs['page'] += 1

View File

@@ -145,6 +145,14 @@ def test_can_create_spreadsheet_from_dict_with_filename():
['Row number', 'phone_number', 'a', 'b', 'c', 'Template', 'Type', 'Job', 'Status', 'Time'],
['1', '07700900123', '🐜', '🐝', '🦀', 'foo', 'sms', 'bar.csv', 'Delivered', 'Thursday 19 April at 12:00'],
),
(
"""
"phone_number", "a", "b", "c"
"07700900123","🐜,🐜","🐝,🐝","🦀"
""",
['Row number', 'phone_number', 'a', 'b', 'c', 'Template', 'Type', 'Job', 'Status', 'Time'],
['1', '07700900123', '🐜,🐜', '🐝,🐝', '🦀', 'foo', 'sms', 'bar.csv', 'Delivered', 'Thursday 19 April at 12:00'],
),
])
def test_generate_notifications_csv_returns_correct_csv_file(
app_,