Projet

Général

Profil

0001-agendas-fix-import-event-crashing-with-nested-quotes.patch

A. Berriot, 04 juillet 2022 18:33

Télécharger (2,25 ko)

Voir les différences:

Subject: [PATCH] agendas: fix import event crashing with nested quotes
 (#66187)

 chrono/manager/forms.py     |  7 ++++---
 tests/manager/test_forms.py | 22 ++++++++++++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 tests/manager/test_forms.py
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()
......
1043 1043

  
1044 1044
        try:
1045 1045
            dialect = csv.Sniffer().sniff(content)
1046
            dialect.doublequote = True
1046 1047
        except csv.Error:
1047 1048
            dialect = None
1048 1049

  
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
-