Fixes #1994. Requests for virtual interim meeting should go directly Scheduled - Waiting for announcement state and an email notification sent to the secretariat. Commit ready for merge.
- Legacy-Id: 11792
This commit is contained in:
parent
47c7c49e37
commit
a13b751e1a
|
@ -180,6 +180,12 @@ class InterimMeetingModelForm(forms.ModelForm):
|
|||
|
||||
return self.cleaned_data
|
||||
|
||||
def is_virtual(self):
|
||||
if not self.is_bound or self.data.get('in_person'):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def set_group_options(self):
|
||||
'''Set group options based on user accessing the form'''
|
||||
if has_role(self.user, "Secretariat"):
|
||||
|
|
|
@ -563,13 +563,13 @@ def send_interim_approval_request(meetings):
|
|||
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"""
|
||||
"""Sends an email to the secretariat that an interim meeting is ready for
|
||||
announcement, 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('interim_approved')
|
||||
from_email = ('"IETF Meeting Session Request Tool"','session_request_developers@ietf.org')
|
||||
subject = '{group} - Interim Meeting Approved'.format(group=group.acronym)
|
||||
subject = '{group} - interim meeting ready for announcement'.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()
|
||||
|
|
|
@ -587,7 +587,7 @@ class InterimTests(TestCase):
|
|||
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'])
|
||||
self.assertTrue('ready for announcement' in outbox[-1]['Subject'])
|
||||
|
||||
def test_interim_approve_by_secretariat(self):
|
||||
make_meeting_test_data()
|
||||
|
@ -670,7 +670,7 @@ class InterimTests(TestCase):
|
|||
len(q("#id_group option")) - 1) # -1 for options placeholder
|
||||
|
||||
|
||||
def test_interim_request_single(self):
|
||||
def test_interim_request_single_virtual(self):
|
||||
make_meeting_test_data()
|
||||
group = Group.objects.get(acronym='mars')
|
||||
date = datetime.date.today() + datetime.timedelta(days=30)
|
||||
|
@ -680,7 +680,8 @@ class InterimTests(TestCase):
|
|||
remote_instructions = 'Use webex'
|
||||
agenda = 'Intro. Slides. Discuss.'
|
||||
agenda_note = 'On second level'
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
length_before = len(outbox)
|
||||
self.client.login(username="marschairman", password="marschairman+password")
|
||||
data = {'group':group.pk,
|
||||
'meeting_type':'single',
|
||||
'city':'',
|
||||
|
@ -698,7 +699,6 @@ class InterimTests(TestCase):
|
|||
'session_set-MAX_NUM_FORMS':1000}
|
||||
|
||||
r = self.client.post(urlreverse("ietf.meeting.views.interim_request"),data)
|
||||
|
||||
self.assertRedirects(r,urlreverse('ietf.meeting.views.upcoming'))
|
||||
meeting = Meeting.objects.order_by('id').last()
|
||||
self.assertEqual(meeting.type_id,'interim')
|
||||
|
@ -710,6 +710,7 @@ class InterimTests(TestCase):
|
|||
session = meeting.session_set.first()
|
||||
self.assertEqual(session.remote_instructions,remote_instructions)
|
||||
self.assertEqual(session.agenda_note,agenda_note)
|
||||
self.assertEqual(session.status.slug,'scheda')
|
||||
timeslot = session.official_timeslotassignment().timeslot
|
||||
self.assertEqual(timeslot.time,dt)
|
||||
self.assertEqual(timeslot.duration,duration)
|
||||
|
@ -718,6 +719,10 @@ class InterimTests(TestCase):
|
|||
doc = session.materials.first()
|
||||
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
|
||||
self.assertTrue(os.path.exists(path))
|
||||
# check notice to secretariat
|
||||
self.assertEqual(len(outbox), length_before + 1)
|
||||
self.assertTrue('interim meeting ready for announcement' in outbox[-1]['Subject'])
|
||||
self.assertTrue('iesg-secretary@ietf.org' in outbox[-1]['To'])
|
||||
|
||||
def test_interim_request_single_in_person(self):
|
||||
make_meeting_test_data()
|
||||
|
|
|
@ -1173,7 +1173,10 @@ def interim_request(request):
|
|||
formset = SessionFormset(instance=Meeting(), data=request.POST)
|
||||
if form.is_valid() and formset.is_valid():
|
||||
group = form.cleaned_data.get('group')
|
||||
is_approved = form.cleaned_data.get('approved', False)
|
||||
if form.is_virtual():
|
||||
is_approved = True
|
||||
else:
|
||||
is_approved = form.cleaned_data.get('approved', False)
|
||||
meeting_type = form.cleaned_data.get('meeting_type')
|
||||
|
||||
# pre create meeting
|
||||
|
@ -1193,6 +1196,8 @@ def interim_request(request):
|
|||
|
||||
if not is_approved:
|
||||
send_interim_approval_request(meetings=[meeting])
|
||||
elif not has_role(request.user, 'Secretariat'):
|
||||
send_interim_announcement_request(meeting=meeting)
|
||||
|
||||
# series require special handling, each session gets it's own
|
||||
# meeting object we won't see this on edit because series are
|
||||
|
@ -1222,6 +1227,8 @@ def interim_request(request):
|
|||
|
||||
if not is_approved:
|
||||
send_interim_approval_request(meetings=series)
|
||||
elif not has_role(request.user, 'Secretariat'):
|
||||
send_interim_announcement_request(meeting=meeting)
|
||||
|
||||
messages.success(request, 'Interim meeting request submitted')
|
||||
return redirect(upcoming)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% load ams_filters %}{% load ietf_filters %}
|
||||
An interim meeting for {{ group.acronym }} has just been approved.
|
||||
An interim meeting for {{ group.acronym }} has been approved or does not require approval and is ready for announcement.
|
||||
|
||||
Use this link to officially announce the meeting:
|
||||
{{ announce_url }}
|
||||
|
|
Loading…
Reference in a new issue