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 #2015. - Legacy-Id: 12344 Note: SVN reference [12330] has been migrated to Git commitd7c1fddb32
Note: SVN reference [12331] has been migrated to Git commitb04d07e5aa
This commit is contained in:
commit
aa4a46086a
|
@ -645,6 +645,23 @@ class InterimTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
self.assertTrue(meeting.number in r.content)
|
||||
|
||||
def test_interim_skip_announcement(self):
|
||||
make_meeting_test_data()
|
||||
group = Group.objects.get(acronym='irg')
|
||||
date = datetime.date.today() + datetime.timedelta(days=30)
|
||||
meeting = make_interim_meeting(group=group, date=date, status='scheda')
|
||||
url = urlreverse("ietf.meeting.views.interim_skip_announcement", kwargs={'number': meeting.number})
|
||||
login_testing_unauthorized(self, "secretary", url)
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
# check post
|
||||
len_before = len(outbox)
|
||||
r = self.client.post(url)
|
||||
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_announce'))
|
||||
self.assertEqual(meeting.session_set.first().status.slug,'sched')
|
||||
self.assertEqual(len(outbox), len_before)
|
||||
|
||||
def test_interim_send_announcement(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
|
||||
|
@ -1095,6 +1112,29 @@ class InterimTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_interim_request_details_skip_announcement(self):
|
||||
make_meeting_test_data()
|
||||
date = datetime.date.today() + datetime.timedelta(days=30)
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
|
||||
# ensure skip announcement option exists for Research Group
|
||||
group = Group.objects.get(acronym='irg')
|
||||
meeting = make_interim_meeting(group=group, date=date, status='scheda')
|
||||
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),1)
|
||||
|
||||
# ensure skip announcement option does not exist for IETF Working Group
|
||||
group = Group.objects.get(acronym='mars')
|
||||
meeting = make_interim_meeting(group=group, date=date, status='scheda')
|
||||
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
q = PyQuery(r.content)
|
||||
self.assertEqual(len(q("a.btn:contains('Skip Announcement')")),0)
|
||||
|
||||
def test_interim_request_disapprove(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
|
||||
|
|
|
@ -89,6 +89,7 @@ urlpatterns = [
|
|||
url(r'^ajax/get-utc/?$', views.ajax_get_utc),
|
||||
url(r'^interim/announce/?$', views.interim_announce),
|
||||
url(r'^interim/announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_send_announcement),
|
||||
url(r'^interim/skip_announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_skip_announcement),
|
||||
url(r'^interim/request/?$', views.interim_request),
|
||||
url(r'^interim/request/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_request_details),
|
||||
url(r'^interim/request/(?P<number>[A-Za-z0-9._+-]+)/edit/?$', views.interim_request_edit),
|
||||
|
|
|
@ -1683,6 +1683,22 @@ def interim_send_announcement(request, number):
|
|||
'form': form})
|
||||
|
||||
|
||||
@role_required('Secretariat',)
|
||||
def interim_skip_announcement(request, number):
|
||||
'''View to change status of interim meeting to Scheduled without
|
||||
first announcing. Only applicable to IRTF groups.
|
||||
'''
|
||||
meeting = get_object_or_404(Meeting, number=number)
|
||||
|
||||
if request.method == 'POST':
|
||||
meeting.session_set.update(status_id='sched')
|
||||
messages.success(request, 'Interim meeting scheduled. No announcement sent.')
|
||||
return redirect(interim_announce)
|
||||
|
||||
return render(request, "meeting/interim_skip_announce.html", {
|
||||
'meeting': meeting})
|
||||
|
||||
|
||||
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair',
|
||||
'RG Chair')
|
||||
def interim_pending(request):
|
||||
|
|
|
@ -53,6 +53,9 @@
|
|||
{% if user|has_role:"Secretariat" and sessions.0.status.slug == 'scheda' %}
|
||||
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_send_announcement' number=meeting.number %}">Announce</a>
|
||||
{% endif %}
|
||||
{% if user|has_role:"Secretariat" and sessions.0.status.slug == 'scheda' and sessions.0.group.type.slug == 'rg' %}
|
||||
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_skip_announcement' number=meeting.number %}">Skip Announcement</a>
|
||||
{% endif %}
|
||||
{% if can_edit %}
|
||||
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' or sessions.0.status.slug == 'sched' %}
|
||||
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_request_cancel' number=meeting.number %}">Cancel Meeting</a>
|
||||
|
|
23
ietf/templates/meeting/interim_skip_announce.html
Normal file
23
ietf/templates/meeting/interim_skip_announce.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
{% extends "base.html" %}
|
||||
{# Copyright The IETF Trust 2015, All Rights Reserved #}
|
||||
{% load origin %}
|
||||
{% load staticfiles bootstrap3 widget_tweaks %}
|
||||
|
||||
{% block title %}Interim Meetings Skip Announcement{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% origin %}
|
||||
<h1>Interim Meetings Skip Announcement</h1>
|
||||
|
||||
<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>
|
||||
|
||||
<form action="" method="post">{% csrf_token %}
|
||||
<input class="btn btn btn-danger" type="submit" value="Continue">
|
||||
<a class="btn btn-default" href="{% url 'ietf.meeting.views.interim_announce' %}">Cancel</a>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
{% endblock %}
|
Loading…
Reference in a new issue