Skip to content

Commit c2ab6f5

Browse files
Cancel multi-session meetings correctly. Fixes ietf-tools#2958. Commit ready for merge.
- Legacy-Id: 18466
1 parent a6939a8 commit c2ab6f5

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

ietf/meeting/tests_views.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1897,6 +1897,29 @@ def test_interim_request_multi_day_non_consecutive(self):
18971897
r = self.client.post(urlreverse("ietf.meeting.views.interim_request"),data)
18981898
self.assertContains(r, 'days must be consecutive')
18991899

1900+
def test_interim_request_multi_day_cancel(self):
1901+
"""All sessions of a multi-day interim request should be canceled"""
1902+
length_before = len(outbox)
1903+
date = datetime.date.today()+datetime.timedelta(days=15)
1904+
1905+
# Set up an interim request with several sessions
1906+
num_sessions = 3
1907+
meeting = MeetingFactory(type_id='interim', date=date)
1908+
for _ in range(num_sessions):
1909+
SessionFactory(meeting=meeting)
1910+
1911+
# Cancel the interim request
1912+
url = urlreverse('ietf.meeting.views.interim_request_cancel', kwargs={'number': meeting.number})
1913+
self.client.login(username="secretary", password="secretary+password")
1914+
r = self.client.post(url)
1915+
1916+
# Verify results
1917+
self.assertRedirects(r, urlreverse('ietf.meeting.views.upcoming'))
1918+
for session in add_event_info_to_session_qs(meeting.session_set.all()):
1919+
self.assertEqual(session.current_status, 'canceled')
1920+
self.assertEqual(len(outbox), length_before + 1)
1921+
self.assertIn('Interim Meeting Cancelled', outbox[-1]['Subject'])
1922+
19001923
def test_interim_request_series(self):
19011924
make_meeting_test_data()
19021925
meeting_count_before = Meeting.objects.filter(type='interim').count()

ietf/meeting/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2513,7 +2513,7 @@ def interim_request_cancel(request, number):
25132513
result_status = SessionStatusName.objects.get(slug='canceled' if was_scheduled else 'canceledpa')
25142514
for session in meeting.session_set.all():
25152515
SchedulingEvent.objects.create(
2516-
session=first_session,
2516+
session=session,
25172517
status=result_status,
25182518
by=request.user.person,
25192519
)

0 commit comments

Comments
 (0)