Send email to secretariat when an interim meeting has been approved and is waiting for announcement. Commit ready for merge.

- Legacy-Id: 11664
This commit is contained in:
Ryan Cross 2016-07-16 11:33:39 +00:00
parent c99cb678c6
commit 54969aa236
4 changed files with 41 additions and 1 deletions

View file

@ -562,6 +562,23 @@ def send_interim_approval_request(meetings):
context,
cc=cc_list)
def send_interim_announcement_request(meeting):
"""Sends an email to the secretariat that approval has been granted for an
interim meeting which includes the link to send the official announcement"""
group = meeting.session_set.first().group
requester = meeting.session_set.first().requested_by
(to_email, cc_list) = gather_address_lists('session_requested',group=group,person=requester)
from_email = ('"IETF Meeting Session Request Tool"','session_request_developers@ietf.org')
subject = '{group} - Interim Meeting Approved'.format(group=group.acronym)
template = 'meeting/interim_announcement_request.txt'
announce_url = settings.IDTRACKER_BASE_URL + reverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
context = locals()
send_mail(None,
to_email,
from_email,
subject,
template,
context,)
def send_interim_cancellation_notice(meeting):
"""Sends an email that a scheduled interim meeting has been cancelled."""

View file

@ -565,7 +565,20 @@ class InterimTests(TestCase):
self.assertEqual(len(outbox), len_before + 1)
self.assertTrue('WG Virtual Meeting' in outbox[-1]['Subject'])
def test_interim_approve(self):
def test_interim_approve_by_ad(self):
make_meeting_test_data()
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
length_before = len(outbox)
login_testing_unauthorized(self, "ad", url)
r = self.client.post(url, {'approve': 'approve'})
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_pending'))
for session in meeting.session_set.all():
self.assertEqual(session.status.slug, 'scheda')
self.assertEqual(len(outbox), length_before + 1)
self.assertTrue('Approved' in outbox[-1]['Subject'])
def test_interim_approve_by_secretariat(self):
make_meeting_test_data()
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
url = urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})

View file

@ -47,6 +47,7 @@ from ietf.meeting.helpers import can_request_interim_meeting, get_announcement_i
from ietf.meeting.helpers import sessions_post_save, is_meeting_approved
from ietf.meeting.helpers import send_interim_cancellation_notice
from ietf.meeting.helpers import send_interim_approval_request
from ietf.meeting.helpers import send_interim_announcement_request
from ietf.utils.mail import send_mail_message
from ietf.utils.pipe import pipe
from ietf.utils.pdf import pdf_pages
@ -1280,6 +1281,7 @@ def interim_request_details(request, number):
if has_role(request.user, 'Secretariat'):
return redirect(interim_send_announcement, number=number)
else:
send_interim_announcement_request(meeting)
return redirect(interim_pending)
if request.POST.get('disapprove') and can_approve_interim_request(meeting, request.user):
meeting.session_set.update(status_id='disappr')

View file

@ -0,0 +1,8 @@
{% load ams_filters %}{% load ietf_filters %}
An interim meeting for {{ group.acronym }} has just been approved.
Use this link to officially announce the meeting:
{{ announce_url }}
{% include "meeting/interim_info.txt" %}