Add the ability for the Secretariat to skip the announcement when scheduling an IRTF interim meeting. Fixes #2015. Commit ready for merge.

- Legacy-Id: 12330
This commit is contained in:
Ryan Cross 2016-11-12 07:11:59 +00:00
parent f29100ab3a
commit d7c1fddb32
4 changed files with 61 additions and 0 deletions

View file

@ -634,6 +634,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()
@ -1071,6 +1088,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()

View file

@ -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),

View file

@ -1670,6 +1670,23 @@ 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)
group = meeting.session_set.first().group
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):

View file

@ -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>