diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 30889de0b..dfb0354e9 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -1897,6 +1897,29 @@ class InterimTests(TestCase): r = self.client.post(urlreverse("ietf.meeting.views.interim_request"),data) self.assertContains(r, 'days must be consecutive') + def test_interim_request_multi_day_cancel(self): + """All sessions of a multi-day interim request should be canceled""" + length_before = len(outbox) + date = datetime.date.today()+datetime.timedelta(days=15) + + # Set up an interim request with several sessions + num_sessions = 3 + meeting = MeetingFactory(type_id='interim', date=date) + for _ in range(num_sessions): + SessionFactory(meeting=meeting) + + # Cancel the interim request + url = urlreverse('ietf.meeting.views.interim_request_cancel', kwargs={'number': meeting.number}) + self.client.login(username="secretary", password="secretary+password") + r = self.client.post(url) + + # Verify results + self.assertRedirects(r, urlreverse('ietf.meeting.views.upcoming')) + for session in add_event_info_to_session_qs(meeting.session_set.all()): + self.assertEqual(session.current_status, 'canceled') + self.assertEqual(len(outbox), length_before + 1) + self.assertIn('Interim Meeting Cancelled', outbox[-1]['Subject']) + def test_interim_request_series(self): make_meeting_test_data() meeting_count_before = Meeting.objects.filter(type='interim').count() diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index b8a847207..4c3d233d4 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -2513,7 +2513,7 @@ def interim_request_cancel(request, number): result_status = SessionStatusName.objects.get(slug='canceled' if was_scheduled else 'canceledpa') for session in meeting.session_set.all(): SchedulingEvent.objects.create( - session=first_session, + session=session, status=result_status, by=request.user.person, )