manager: fix event & slug edition (#56851)
This commit is contained in:
parent
246e14e7e4
commit
a150cd857e
|
@ -260,6 +260,14 @@ class EventForm(NewEventForm):
|
|||
):
|
||||
del self.fields[field]
|
||||
|
||||
def clean_slug(self):
|
||||
slug = self.cleaned_data['slug']
|
||||
|
||||
if self.instance.agenda.event_set.filter(slug=slug).exclude(pk=self.instance.pk).exists():
|
||||
raise ValidationError(_('Another event exists with the same identifier.'))
|
||||
|
||||
return slug
|
||||
|
||||
def clean(self):
|
||||
super().clean()
|
||||
if 'recurrence_end_date' in self.changed_data and self.instance.has_recurrences_booked(
|
||||
|
|
|
@ -109,12 +109,30 @@ def test_add_event_as_manager(app, manager_user):
|
|||
|
||||
def test_edit_event(settings, app, admin_user):
|
||||
settings.LANGUAGE_CODE = 'fr-fr' # check date initial value format
|
||||
agenda = Agenda(label='Foo bar')
|
||||
agenda.save()
|
||||
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=20, agenda=agenda)
|
||||
event.save()
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
event = Event.objects.create(
|
||||
label='Foo',
|
||||
start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)),
|
||||
places=20,
|
||||
agenda=agenda,
|
||||
)
|
||||
event2 = Event.objects.create(
|
||||
label='Other',
|
||||
start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)),
|
||||
places=20,
|
||||
agenda=agenda,
|
||||
)
|
||||
assert event.duration is None
|
||||
assert event.end_datetime is None
|
||||
other_agenda = Agenda.objects.create(label='Foo bar')
|
||||
other_event = Event.objects.create(
|
||||
label='Foo',
|
||||
start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)),
|
||||
places=20,
|
||||
agenda=other_agenda,
|
||||
)
|
||||
assert event.slug == other_event.slug
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.pk, event.pk))
|
||||
assert resp.form['start_datetime_0'].value == '2016-02-15'
|
||||
|
@ -139,6 +157,13 @@ def test_edit_event(settings, app, admin_user):
|
|||
assert event.duration == 45
|
||||
assert event.end_datetime == event.start_datetime + datetime.timedelta(minutes=45)
|
||||
assert event.description == 'A description'
|
||||
assert event.slug == other_event.slug
|
||||
|
||||
# check slug edition
|
||||
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.pk, event.pk))
|
||||
resp.form['slug'] = event2.slug
|
||||
resp = resp.form.submit()
|
||||
assert resp.context['form'].errors['slug'] == ['Another event exists with the same identifier.']
|
||||
|
||||
|
||||
def test_event_digit_slug(app, admin_user):
|
||||
|
|
Loading…
Reference in New Issue