diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index eea08be8c77..c63c8f2139d 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -5890,8 +5890,48 @@ def test_interim_request_details_announcement(self): q = PyQuery(r.content) self.assertEqual(len(q("a.btn:contains('nnounce')")),2) - def test_interim_request_details_cancel(self): - """Test access to cancel meeting / session features""" + def test_interim_meeting_cancel(self): + make_interim_test_data() + mars_sessions = Session.objects.with_current_status( + ).filter( + meeting__type='interim', + group__acronym='mars', + current_status="sched" + ) + meeting = mars_sessions.first().meeting + # All these roles should have access to cancel the request + usernames_and_passwords = ( + ('marschairman', 'marschairman+password'), + ('secretary', 'secretary+password') + ) + url = urlreverse('ietf.meeting.views.session_details', + kwargs={'num': meeting.number, 'acronym': 'mars'}) + + for username, password in usernames_and_passwords: + self.client.login(username=username, password=password) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) + cancel_meeting_btns = q("a.btn:contains('Cancel meeting')") + self.assertEqual(len(cancel_meeting_btns), 1, + 'Should be exactly one cancel meeting button for user %s' % username) + self.assertEqual(cancel_meeting_btns.eq(0).attr('href'), + urlreverse('ietf.meeting.views.interim_request_cancel', + kwargs={'number': meeting.number}), + 'Cancel meeting points to wrong URL') + + # test unauthorized access to cancellation button + self.client.login(username="ameschairman", password="ameschairman+password") + r = self.client.get(url) + q = PyQuery(r.content) + self.assertEqual(len(q("a.btn:contains('Cancel meeting')")), 0) + self.client.logout() + self.client.login(username="") + r = self.client.get(url) + q = PyQuery(r.content) + self.assertEqual(len(q("a.btn:contains('Cancel meeting')")), 0) + + def test_interim_session_cancel(self): make_interim_test_data() mars_sessions = Session.objects.with_current_status( ).filter( @@ -5916,14 +5956,6 @@ def test_interim_request_details_cancel(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - cancel_meeting_btns = q("a.btn:contains('Cancel meeting')") - self.assertEqual(len(cancel_meeting_btns), 1, - 'Should be exactly one cancel meeting button for user %s' % username) - self.assertEqual(cancel_meeting_btns.eq(0).attr('href'), - urlreverse('ietf.meeting.views.interim_request_cancel', - kwargs={'number': meeting.number}), - 'Cancel meeting points to wrong URL') - self.assertEqual(len(q("a.btn:contains('Cancel Session')")), 0, 'Should be no cancel session buttons for user %s' % username) @@ -5940,14 +5972,6 @@ def test_interim_request_details_cancel(self): r = self.client.get(url) self.assertEqual(r.status_code, 200) q = PyQuery(r.content) - cancel_meeting_btns = q("a.btn:contains('Cancel meeting')") - self.assertEqual(len(cancel_meeting_btns), 1, - 'Should be exactly one cancel meeting button for user %s' % username) - self.assertEqual(cancel_meeting_btns.eq(0).attr('href'), - urlreverse('ietf.meeting.views.interim_request_cancel', - kwargs={'number': meeting.number}), - 'Cancel meeting button points to wrong URL') - cancel_session_btns = q("a.btn:contains('Cancel session')") self.assertEqual(len(cancel_session_btns), 2, 'Should be two cancel session buttons for user %s' % username) diff --git a/ietf/templates/meeting/interim_request_details.html b/ietf/templates/meeting/interim_request_details.html index 89545d14e56..d0f4b4213c0 100644 --- a/ietf/templates/meeting/interim_request_details.html +++ b/ietf/templates/meeting/interim_request_details.html @@ -126,14 +126,6 @@

Interim Meeting Request Details

Skip announcement {% endif %} - {% if can_edit %} - {% if status_slug == 'apprw' or status_slug == 'scheda' or status_slug == 'sched' %} - - Cancel meeting - - {% endif %} - {% endif %} {% if status_slug == "apprw" %} Back diff --git a/ietf/templates/meeting/session_details_panel.html b/ietf/templates/meeting/session_details_panel.html index 7c52ac0b4ab..32a45dff6e0 100644 --- a/ietf/templates/meeting/session_details_panel.html +++ b/ietf/templates/meeting/session_details_panel.html @@ -38,6 +38,14 @@

Meeting details {% endif %} + {% if meeting.type.slug == 'interim' %} + {% if future %} + + Cancel meeting + + {% endif %} + {% endif %} {% if not session.type_counter.agenda %}
This session does not yet have an agenda.