diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 0656c2389..0bdc3c34f 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -851,7 +851,7 @@ class MeetingTests(BaseMeetingTestCase): new_base = Schedule.objects.create(name="newbase", owner=schedule.owner, meeting=schedule.meeting) response = self.client.post(url, { - 'name':schedule.name, + 'name': 'some-other-name', 'visible':True, 'public':True, 'notes': "New Notes", @@ -859,11 +859,19 @@ class MeetingTests(BaseMeetingTestCase): } ) self.assertNoFormPostErrors(response) + self.assertRedirects( + response, + urlreverse( + 'ietf.meeting.views.edit_meeting_schedule', + kwargs={'num': schedule.meeting.number, 'owner': schedule.owner.email(), 'name': 'some-other-name'} + ), + ) schedule.refresh_from_db() self.assertTrue(schedule.visible) self.assertTrue(schedule.public) self.assertEqual(schedule.notes, "New Notes") self.assertEqual(schedule.base_id, new_base.pk) + self.assertEqual(schedule.name, 'some-other-name') def test_agenda_by_type_ics(self): session=SessionFactory(meeting__type_id='ietf',type_id='lead') diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 04a54d9a1..8918176c4 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1344,12 +1344,13 @@ def edit_schedule_properties(request, num, owner, name): permission_denied(request, "You may not edit this schedule.") if request.method == 'POST': - form = SchedulePropertiesForm(meeting, instance=schedule, data=request.POST) + # use a new copy of the Schedule instance for the form so the template isn't fouled if validation fails + form = SchedulePropertiesForm(meeting, instance=Schedule.objects.get(pk=schedule.pk), data=request.POST) if form.is_valid(): - form.save() - if request.GET.get('next'): - return HttpResponseRedirect(request.GET.get('next')) - return redirect('ietf.meeting.views.edit_meeting_schedule', num=num, owner=owner, name=name) + form.save() + if request.GET.get('next'): + return HttpResponseRedirect(request.GET.get('next')) + return redirect('ietf.meeting.views.edit_meeting_schedule', num=num, owner=owner, name=form.instance.name) else: form = SchedulePropertiesForm(meeting, instance=schedule)