0001-agendas-fix-import-event-crashing-with-nested-quotes.patch
chrono/manager/forms.py | ||
---|---|---|
1023 | 1023 |
) |
1024 | 1024 |
events = None |
1025 | 1025 | |
1026 |
def __init__(self, agenda_pk, **kwargs):
|
|
1027 |
self.agenda_pk = agenda_pk
|
|
1028 |
super().__init__(**kwargs) |
|
1026 |
def __init__(self, *args, **kwargs):
|
|
1027 |
self.agenda_pk = kwargs.pop("agenda_pk")
|
|
1028 |
super().__init__(*args, **kwargs)
|
|
1029 | 1029 | |
1030 | 1030 |
def clean_events_csv_file(self): |
1031 | 1031 |
content = self.cleaned_data['events_csv_file'].read() |
... | ... | |
1046 | 1046 |
except csv.Error: |
1047 | 1047 |
dialect = None |
1048 | 1048 | |
1049 |
dialect.doublequote = True |
|
1049 | 1050 |
events = [] |
1050 | 1051 |
warnings = {} |
1051 | 1052 |
events_by_slug = {x.slug: x for x in Event.objects.filter(agenda=self.agenda_pk)} |
tests/manager/test_forms.py | ||
---|---|---|
1 |
from django.core.files import uploadedfile |
|
2 | ||
3 |
from chrono.agendas import models |
|
4 |
from chrono.manager import forms |
|
5 | ||
6 | ||
7 |
def test_import_does_supports_nested_quotes(app, db): |
|
8 |
agenda = models.Agenda.objects.create(label='Foo Bar', kind='events') |
|
9 | ||
10 |
csv_data = '''date;heure;nombre de places;nombre de places dans la liste d'attente;Libellé;identifiant;description;tarif;URL;date de publication;durée |
|
11 |
27/08/2022;10:30;8;100;Initiation spéléologie;cds2-groupe2-448001030;"Animation: |
|
12 | ||
13 |
des conditions ""extrêmes"" ! |
|
14 |
";;https://services.publik.love/fr/;01/06/2022;120 |
|
15 |
''' |
|
16 | ||
17 |
file = uploadedfile.SimpleUploadedFile("data.csv", csv_data.encode(), "text/csv") |
|
18 |
form = forms.ImportEventsForm({}, {"events_csv_file": file}, agenda_pk=agenda.pk) |
|
19 | ||
20 |
assert form.is_valid() is True |
|
21 | ||
22 |
assert '''des conditions "extrêmes"''' in form.events[0].description |
|
0 |
- |