Skip to content

Commit fd2adc8

Browse files
fix: redirect to renamed schedule after saving a name change (ietf-tools#3696)
Fixes ietf-tools#3427
1 parent 6ee123d commit fd2adc8

2 files changed

Lines changed: 15 additions & 6 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -851,19 +851,27 @@ def test_edit_schedule_properties(self):
851851

852852
new_base = Schedule.objects.create(name="newbase", owner=schedule.owner, meeting=schedule.meeting)
853853
response = self.client.post(url, {
854-
'name':schedule.name,
854+
'name': 'some-other-name',
855855
'visible':True,
856856
'public':True,
857857
'notes': "New Notes",
858858
'base': new_base.pk,
859859
}
860860
)
861861
self.assertNoFormPostErrors(response)
862+
self.assertRedirects(
863+
response,
864+
urlreverse(
865+
'ietf.meeting.views.edit_meeting_schedule',
866+
kwargs={'num': schedule.meeting.number, 'owner': schedule.owner.email(), 'name': 'some-other-name'}
867+
),
868+
)
862869
schedule.refresh_from_db()
863870
self.assertTrue(schedule.visible)
864871
self.assertTrue(schedule.public)
865872
self.assertEqual(schedule.notes, "New Notes")
866873
self.assertEqual(schedule.base_id, new_base.pk)
874+
self.assertEqual(schedule.name, 'some-other-name')
867875

868876
def test_agenda_by_type_ics(self):
869877
session=SessionFactory(meeting__type_id='ietf',type_id='lead')

ietf/meeting/views.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1344,12 +1344,13 @@ def edit_schedule_properties(request, num, owner, name):
13441344
permission_denied(request, "You may not edit this schedule.")
13451345

13461346
if request.method == 'POST':
1347-
form = SchedulePropertiesForm(meeting, instance=schedule, data=request.POST)
1347+
# use a new copy of the Schedule instance for the form so the template isn't fouled if validation fails
1348+
form = SchedulePropertiesForm(meeting, instance=Schedule.objects.get(pk=schedule.pk), data=request.POST)
13481349
if form.is_valid():
1349-
form.save()
1350-
if request.GET.get('next'):
1351-
return HttpResponseRedirect(request.GET.get('next'))
1352-
return redirect('ietf.meeting.views.edit_meeting_schedule', num=num, owner=owner, name=name)
1350+
form.save()
1351+
if request.GET.get('next'):
1352+
return HttpResponseRedirect(request.GET.get('next'))
1353+
return redirect('ietf.meeting.views.edit_meeting_schedule', num=num, owner=owner, name=form.instance.name)
13531354
else:
13541355
form = SchedulePropertiesForm(meeting, instance=schedule)
13551356

0 commit comments

Comments
 (0)