Skip to content

Commit aa4a460

Browse files
committed
Merged in [12330] and [12331] from rcross@amsl.com:
Add the ability for the Secretariat to skip the announcement when scheduling an IRTF interim meeting. Fixes ietf-tools#2015. - Legacy-Id: 12344 Note: SVN reference [12330] has been migrated to Git commit d7c1fdd Note: SVN reference [12331] has been migrated to Git commit b04d07e
2 parents f9b6120 + b04d07e commit aa4a460

5 files changed

Lines changed: 83 additions & 0 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,23 @@ def test_interim_announce(self):
645645
self.assertEqual(r.status_code, 200)
646646
self.assertTrue(meeting.number in r.content)
647647

648+
def test_interim_skip_announcement(self):
649+
make_meeting_test_data()
650+
group = Group.objects.get(acronym='irg')
651+
date = datetime.date.today() + datetime.timedelta(days=30)
652+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
653+
url = urlreverse("ietf.meeting.views.interim_skip_announcement", kwargs={'number': meeting.number})
654+
login_testing_unauthorized(self, "secretary", url)
655+
r = self.client.get(url)
656+
self.assertEqual(r.status_code, 200)
657+
658+
# check post
659+
len_before = len(outbox)
660+
r = self.client.post(url)
661+
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_announce'))
662+
self.assertEqual(meeting.session_set.first().status.slug,'sched')
663+
self.assertEqual(len(outbox), len_before)
664+
648665
def test_interim_send_announcement(self):
649666
make_meeting_test_data()
650667
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
@@ -1095,6 +1112,29 @@ def test_interim_request_details(self):
10951112
r = self.client.get(url)
10961113
self.assertEqual(r.status_code, 200)
10971114

1115+
def test_interim_request_details_skip_announcement(self):
1116+
make_meeting_test_data()
1117+
date = datetime.date.today() + datetime.timedelta(days=30)
1118+
self.client.login(username="secretary", password="secretary+password")
1119+
1120+
# ensure skip announcement option exists for Research Group
1121+
group = Group.objects.get(acronym='irg')
1122+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
1123+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
1124+
r = self.client.get(url)
1125+
self.assertEqual(r.status_code, 200)
1126+
q = PyQuery(r.content)
1127+
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),1)
1128+
1129+
# ensure skip announcement option does not exist for IETF Working Group
1130+
group = Group.objects.get(acronym='mars')
1131+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
1132+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
1133+
r = self.client.get(url)
1134+
self.assertEqual(r.status_code, 200)
1135+
q = PyQuery(r.content)
1136+
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),0)
1137+
10981138
def test_interim_request_disapprove(self):
10991139
make_meeting_test_data()
11001140
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()

ietf/meeting/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
url(r'^ajax/get-utc/?$', views.ajax_get_utc),
9090
url(r'^interim/announce/?$', views.interim_announce),
9191
url(r'^interim/announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_send_announcement),
92+
url(r'^interim/skip_announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_skip_announcement),
9293
url(r'^interim/request/?$', views.interim_request),
9394
url(r'^interim/request/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_request_details),
9495
url(r'^interim/request/(?P<number>[A-Za-z0-9._+-]+)/edit/?$', views.interim_request_edit),

ietf/meeting/views.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1683,6 +1683,22 @@ def interim_send_announcement(request, number):
16831683
'form': form})
16841684

16851685

1686+
@role_required('Secretariat',)
1687+
def interim_skip_announcement(request, number):
1688+
'''View to change status of interim meeting to Scheduled without
1689+
first announcing. Only applicable to IRTF groups.
1690+
'''
1691+
meeting = get_object_or_404(Meeting, number=number)
1692+
1693+
if request.method == 'POST':
1694+
meeting.session_set.update(status_id='sched')
1695+
messages.success(request, 'Interim meeting scheduled. No announcement sent.')
1696+
return redirect(interim_announce)
1697+
1698+
return render(request, "meeting/interim_skip_announce.html", {
1699+
'meeting': meeting})
1700+
1701+
16861702
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair',
16871703
'RG Chair')
16881704
def interim_pending(request):

ietf/templates/meeting/interim_request_details.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ <h1>Interim Meeting Request Details</h1>
5353
{% if user|has_role:"Secretariat" and sessions.0.status.slug == 'scheda' %}
5454
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_send_announcement' number=meeting.number %}">Announce</a>
5555
{% endif %}
56+
{% if user|has_role:"Secretariat" and sessions.0.status.slug == 'scheda' and sessions.0.group.type.slug == 'rg' %}
57+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_skip_announcement' number=meeting.number %}">Skip Announcement</a>
58+
{% endif %}
5659
{% if can_edit %}
5760
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' or sessions.0.status.slug == 'sched' %}
5861
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">Cancel Meeting</a>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{% extends "base.html" %}
2+
{# Copyright The IETF Trust 2015, All Rights Reserved #}
3+
{% load origin %}
4+
{% load staticfiles bootstrap3 widget_tweaks %}
5+
6+
{% block title %}Interim Meetings Skip Announcement{% endblock %}
7+
8+
9+
{% block content %}
10+
{% origin %}
11+
<h1>Interim Meetings Skip Announcement</h1>
12+
13+
<p>You are requesting to complete scheduling of the interim meeting for {{ meeting.session_set.first.group.acronym|upper }} on {{ meeting.date }} without sending an announcemnt.</p>
14+
15+
<form action="" method="post">{% csrf_token %}
16+
<input class="btn btn btn-danger" type="submit" value="Continue">
17+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_announce' %}">Cancel</a>
18+
</form>
19+
20+
{% endblock %}
21+
22+
{% block js %}
23+
{% endblock %}

0 commit comments

Comments
 (0)