Cancel multi-session meetings correctly. Fixes #2958. Commit ready for merge.

- Legacy-Id: 18466
This commit is contained in:
Jennifer Richards 2020-09-03 16:30:36 +00:00
parent a6939a8c2f
commit c2ab6f595a
2 changed files with 24 additions and 1 deletions

View file

@ -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()

View file

@ -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,
)