Projet

Général

Profil

0001-manager-validate-imported-events-35011.patch

Benjamin Dauvergne, 24 juillet 2019 13:56

Télécharger (2,11 ko)

Voir les différences:

Subject: [PATCH] manager: validate imported events (#35011)

 chrono/manager/forms.py | 10 ++++++++++
 tests/test_manager.py   |  4 ++++
 2 files changed, 14 insertions(+)
chrono/manager/forms.py
221 221
                    raise ValidationError(_('Invalid file format. (number of places in waiting list, line %d)') % (i+1))
222 222
            if len(csvline) >= 5:
223 223
                event.label = ' '.join([force_text(x) for x in csvline[4:]])
224
            try:
225
                event.full_clean(exclude=['agenda', 'desk', 'meeting_type'])
226
            except ValidationError as e:
227
                errors = [
228
                    _('Invalid file format. (%(label)s: %(errors)s, line %(line)d)') % {
229
                        'label': label,
230
                        'errors': u', '.join(field_errors),
231
                        'line': i + 1
232
                    } for label, field_errors in e.message_dict.items()]
233
                raise ValidationError(errors)
224 234
            events.append(event)
225 235
        self.events = events
226 236

  
tests/test_manager.py
553 553
    resp = resp.form.submit(status=200)
554 554
    assert 'Invalid file format. (number of places in waiting list,' in resp.text
555 555

  
556
    resp.form['events_csv_file'] = Upload('t.csv', b'2016-09-16,18:00,10,5,' + b'x' * 151, 'text/csv')
557
    resp = resp.form.submit(status=200)
558
    assert 'Invalid file format. (label: Ensure this value has at most 150' in resp.text
559

  
556 560
    resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
557 561
    resp.form['events_csv_file'] = Upload('t.csv', b'2016-09-16,18:00,10', 'text/csv')
558 562
    resp = resp.form.submit(status=302)
559
-