Projet

Général

Profil

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

A. Berriot, 04 juillet 2022 18:28

Télécharger (2,31 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()
......
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
-