agendas: fix import event crashing with nested quotes (#66187)

This commit is contained in:
Agate 2022-07-05 11:25:43 +02:00
parent 9b2c59b025
commit dcb8aed83a
2 changed files with 32 additions and 0 deletions

View File

@ -1043,6 +1043,7 @@ class ImportEventsForm(forms.Form):
try:
dialect = csv.Sniffer().sniff(content)
dialect.doublequote = True
except csv.Error:
dialect = None

View File

@ -995,6 +995,37 @@ def test_import_events(app, admin_user):
assert 'Identifier:' in resp.text # verbose_name is shown, not field name ('slug:')
def test_import_event_nested_quotes(app, admin_user):
agenda = Agenda(label='Foo bar')
agenda.save()
app = login(app)
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
resp.form['events_csv_file'] = Upload(
't.csv',
','.join(
[
"2016-09-16",
"18:00",
"10",
"5",
"éléphant",
"elephant",
# the multiline description and final dot
# and new line after ""éléphants"" are needed to trigger the bug.
'''"Animation:
De nombreux ""éléphants"".
"''',
]
).encode(),
'text/csv',
)
resp = resp.form.submit(status=302)
assert Event.objects.count() == 1
assert 'De nombreux "éléphants"' in Event.objects.all()[0].description
def test_import_events_existing_event(app, admin_user, freezer):
agenda = Agenda.objects.create(label='Foo bar')
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')