Skip to content

Commit d7c1fdd

Browse files
committed
Add the ability for the Secretariat to skip the announcement when scheduling an IRTF interim meeting. Fixes ietf-tools#2015. Commit ready for merge.
- Legacy-Id: 12330
1 parent f29100a commit d7c1fdd

4 files changed

Lines changed: 61 additions & 0 deletions

File tree

ietf/meeting/tests_views.py

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

637+
def test_interim_skip_announcement(self):
638+
make_meeting_test_data()
639+
group = Group.objects.get(acronym='irg')
640+
date = datetime.date.today() + datetime.timedelta(days=30)
641+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
642+
url = urlreverse("ietf.meeting.views.interim_skip_announcement", kwargs={'number': meeting.number})
643+
login_testing_unauthorized(self, "secretary", url)
644+
r = self.client.get(url)
645+
self.assertEqual(r.status_code, 200)
646+
647+
# check post
648+
len_before = len(outbox)
649+
r = self.client.post(url)
650+
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_announce'))
651+
self.assertEqual(meeting.session_set.first().status.slug,'sched')
652+
self.assertEqual(len(outbox), len_before)
653+
637654
def test_interim_send_announcement(self):
638655
make_meeting_test_data()
639656
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
@@ -1071,6 +1088,29 @@ def test_interim_request_details(self):
10711088
r = self.client.get(url)
10721089
self.assertEqual(r.status_code, 200)
10731090

1091+
def test_interim_request_details_skip_announcement(self):
1092+
make_meeting_test_data()
1093+
date = datetime.date.today() + datetime.timedelta(days=30)
1094+
self.client.login(username="secretary", password="secretary+password")
1095+
1096+
# ensure skip announcement option exists for Research Group
1097+
group = Group.objects.get(acronym='irg')
1098+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
1099+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
1100+
r = self.client.get(url)
1101+
self.assertEqual(r.status_code, 200)
1102+
q = PyQuery(r.content)
1103+
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),1)
1104+
1105+
# ensure skip announcement option does not exist for IETF Working Group
1106+
group = Group.objects.get(acronym='mars')
1107+
meeting = make_interim_meeting(group=group, date=date, status='scheda')
1108+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
1109+
r = self.client.get(url)
1110+
self.assertEqual(r.status_code, 200)
1111+
q = PyQuery(r.content)
1112+
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),0)
1113+
10741114
def test_interim_request_disapprove(self):
10751115
make_meeting_test_data()
10761116
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: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,23 @@ def interim_send_announcement(request, number):
16701670
'form': form})
16711671

16721672

1673+
@role_required('Secretariat',)
1674+
def interim_skip_announcement(request, number):
1675+
'''View to change status of interim meeting to Scheduled without
1676+
first announcing. Only applicable to IRTF groups.
1677+
'''
1678+
meeting = get_object_or_404(Meeting, number=number)
1679+
group = meeting.session_set.first().group
1680+
1681+
if request.method == 'POST':
1682+
meeting.session_set.update(status_id='sched')
1683+
messages.success(request, 'Interim meeting scheduled. No announcement sent.')
1684+
return redirect(interim_announce)
1685+
1686+
return render(request, "meeting/interim_skip_announce.html", {
1687+
'meeting': meeting})
1688+
1689+
16731690
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair',
16741691
'RG Chair')
16751692
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>

0 commit comments

Comments
 (0)