Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 42 additions & 18 deletions ietf/meeting/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -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="<nobody>")
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(
Expand All @@ -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)

Expand All @@ -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)
Expand Down
8 changes: 0 additions & 8 deletions ietf/templates/meeting/interim_request_details.html
Original file line number Diff line number Diff line change
Expand Up @@ -126,14 +126,6 @@ <h1>Interim Meeting Request Details</h1>
Skip announcement
</a>
{% endif %}
{% if can_edit %}
{% if status_slug == 'apprw' or status_slug == 'scheda' or status_slug == 'sched' %}
<a class="btn btn-danger"
href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">
Cancel meeting
</a>
{% endif %}
{% endif %}
{% if status_slug == "apprw" %}
<a class="btn btn-secondary float-end"
href="{% url 'ietf.meeting.views.interim_pending' %}">Back</a>
Expand Down
8 changes: 8 additions & 0 deletions ietf/templates/meeting/session_details_panel.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@ <h3 class="" id="session_{{ session.pk }}">
Meeting details
</a>
{% endif %}
{% if meeting.type.slug == 'interim' %}
{% if future %}
<a class="btn btn-danger"
href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">
Cancel meeting
</a>
{% endif %}
{% endif %}
</div>
{% if not session.type_counter.agenda %}
<div class="alert alert-warning my-3">This session does not yet have an agenda.</div>
Expand Down
Loading