Projet

Général

Profil

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

Benjamin Dauvergne, 23 juillet 2019 16:48

Télécharger (2,16 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
                if getattr(e, 'message_dict', None):
228
                    errors = [
229
                        _('Invalid file format. (%s: %s, line %d)') % (label, u', '.join(errors), i + 1)
230
                        for label, errors in e.message_dict.items()]
231
                else:
232
                    errors = [_('Invalid file format. (%s, line %d)') % (error, i + 1) for error in e]
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
-