Skip to content

Commit a13b751

Browse files
committed
Fixes ietf-tools#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
1 parent 47c7c49 commit a13b751

5 files changed

Lines changed: 27 additions & 9 deletions

File tree

ietf/meeting/forms.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ def clean(self):
180180

181181
return self.cleaned_data
182182

183+
def is_virtual(self):
184+
if not self.is_bound or self.data.get('in_person'):
185+
return False
186+
else:
187+
return True
188+
183189
def set_group_options(self):
184190
'''Set group options based on user accessing the form'''
185191
if has_role(self.user, "Secretariat"):

ietf/meeting/helpers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -563,13 +563,13 @@ def send_interim_approval_request(meetings):
563563
cc=cc_list)
564564

565565
def send_interim_announcement_request(meeting):
566-
"""Sends an email to the secretariat that approval has been granted for an
567-
interim meeting which includes the link to send the official announcement"""
566+
"""Sends an email to the secretariat that an interim meeting is ready for
567+
announcement, includes the link to send the official announcement"""
568568
group = meeting.session_set.first().group
569569
requester = meeting.session_set.first().requested_by
570570
(to_email, cc_list) = gather_address_lists('interim_approved')
571571
from_email = ('"IETF Meeting Session Request Tool"','session_request_developers@ietf.org')
572-
subject = '{group} - Interim Meeting Approved'.format(group=group.acronym)
572+
subject = '{group} - interim meeting ready for announcement'.format(group=group.acronym)
573573
template = 'meeting/interim_announcement_request.txt'
574574
announce_url = settings.IDTRACKER_BASE_URL + reverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number})
575575
context = locals()

ietf/meeting/tests_views.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ def test_interim_approve_by_ad(self):
587587
for session in meeting.session_set.all():
588588
self.assertEqual(session.status.slug, 'scheda')
589589
self.assertEqual(len(outbox), length_before + 1)
590-
self.assertTrue('Approved' in outbox[-1]['Subject'])
590+
self.assertTrue('ready for announcement' in outbox[-1]['Subject'])
591591

592592
def test_interim_approve_by_secretariat(self):
593593
make_meeting_test_data()
@@ -670,7 +670,7 @@ def test_interim_request_options(self):
670670
len(q("#id_group option")) - 1) # -1 for options placeholder
671671

672672

673-
def test_interim_request_single(self):
673+
def test_interim_request_single_virtual(self):
674674
make_meeting_test_data()
675675
group = Group.objects.get(acronym='mars')
676676
date = datetime.date.today() + datetime.timedelta(days=30)
@@ -680,7 +680,8 @@ def test_interim_request_single(self):
680680
remote_instructions = 'Use webex'
681681
agenda = 'Intro. Slides. Discuss.'
682682
agenda_note = 'On second level'
683-
self.client.login(username="secretary", password="secretary+password")
683+
length_before = len(outbox)
684+
self.client.login(username="marschairman", password="marschairman+password")
684685
data = {'group':group.pk,
685686
'meeting_type':'single',
686687
'city':'',
@@ -698,7 +699,6 @@ def test_interim_request_single(self):
698699
'session_set-MAX_NUM_FORMS':1000}
699700

700701
r = self.client.post(urlreverse("ietf.meeting.views.interim_request"),data)
701-
702702
self.assertRedirects(r,urlreverse('ietf.meeting.views.upcoming'))
703703
meeting = Meeting.objects.order_by('id').last()
704704
self.assertEqual(meeting.type_id,'interim')
@@ -710,6 +710,7 @@ def test_interim_request_single(self):
710710
session = meeting.session_set.first()
711711
self.assertEqual(session.remote_instructions,remote_instructions)
712712
self.assertEqual(session.agenda_note,agenda_note)
713+
self.assertEqual(session.status.slug,'scheda')
713714
timeslot = session.official_timeslotassignment().timeslot
714715
self.assertEqual(timeslot.time,dt)
715716
self.assertEqual(timeslot.duration,duration)
@@ -718,6 +719,10 @@ def test_interim_request_single(self):
718719
doc = session.materials.first()
719720
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
720721
self.assertTrue(os.path.exists(path))
722+
# check notice to secretariat
723+
self.assertEqual(len(outbox), length_before + 1)
724+
self.assertTrue('interim meeting ready for announcement' in outbox[-1]['Subject'])
725+
self.assertTrue('iesg-secretary@ietf.org' in outbox[-1]['To'])
721726

722727
def test_interim_request_single_in_person(self):
723728
make_meeting_test_data()

ietf/meeting/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1173,7 +1173,10 @@ def interim_request(request):
11731173
formset = SessionFormset(instance=Meeting(), data=request.POST)
11741174
if form.is_valid() and formset.is_valid():
11751175
group = form.cleaned_data.get('group')
1176-
is_approved = form.cleaned_data.get('approved', False)
1176+
if form.is_virtual():
1177+
is_approved = True
1178+
else:
1179+
is_approved = form.cleaned_data.get('approved', False)
11771180
meeting_type = form.cleaned_data.get('meeting_type')
11781181

11791182
# pre create meeting
@@ -1193,6 +1196,8 @@ def interim_request(request):
11931196

11941197
if not is_approved:
11951198
send_interim_approval_request(meetings=[meeting])
1199+
elif not has_role(request.user, 'Secretariat'):
1200+
send_interim_announcement_request(meeting=meeting)
11961201

11971202
# series require special handling, each session gets it's own
11981203
# meeting object we won't see this on edit because series are
@@ -1222,6 +1227,8 @@ def interim_request(request):
12221227

12231228
if not is_approved:
12241229
send_interim_approval_request(meetings=series)
1230+
elif not has_role(request.user, 'Secretariat'):
1231+
send_interim_announcement_request(meeting=meeting)
12251232

12261233
messages.success(request, 'Interim meeting request submitted')
12271234
return redirect(upcoming)

ietf/templates/meeting/interim_announcement_request.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% load ams_filters %}{% load ietf_filters %}
2-
An interim meeting for {{ group.acronym }} has just been approved.
2+
An interim meeting for {{ group.acronym }} has been approved or does not require approval and is ready for announcement.
33

44
Use this link to officially announce the meeting:
55
{{ announce_url }}

0 commit comments

Comments
 (0)