Projet

Général

Profil

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

Benjamin Dauvergne, 24 juillet 2019 06:36

Télécharger (2,42 ko)

Voir les différences:

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

 chrono/manager/forms.py | 16 ++++++++++++++++
 tests/test_manager.py   |  4 ++++
 2 files changed, 20 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. (%(label)s: %(errors)s, line %(line)d)') % {
230
                            'label': label,
231
                            'errors': u', '.join(field_errors),
232
                            'line': i + 1
233
                        } for label, field_errors in e.message_dict.items()]
234
                else:
235
                    errors = [_('Invalid file format. (%(error)s, line %(line)d)') % {
236
                        'error': error,
237
                        'line': i + 1
238
                    } for error in e]
239
                raise ValidationError(errors)
224 240
            events.append(event)
225 241
        self.events = events
226 242

  
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
-