Skip to content

Commit f497367

Browse files
committed
Provide a test materials directory for the bluesheets tests, to avoid dependency on the local directory setup.
- Legacy-Id: 11820
2 parents 78e4737 + a13b751 commit f497367

6 files changed

Lines changed: 32 additions & 17 deletions

File tree

bin/mkdiagram

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,16 @@ export PYTHONPATH="$PWD/.."
2828
echo "Validating..."
2929
./manage.py validate
3030

31-
echo "Dump tables"
32-
./manage.py sql $apps > tables.sql
3331
export PYTHONPATH=`dirname $PWD`
3432
module=${PWD##*/}
3533
export DJANGO_SETTINGS_MODULE=$module.settings
3634
export graph
3735
export title
36+
3837
echo "Generate model graph"
3938
graph="models-with-names-and-events"
4039
title="New IETF Database schema"
41-
modelviz.py --exclude="$proxy,$legacy" --title "$title" $apps > $graph.dot && dot -Tpng $graph.dot > $graph.png
40+
${0%/*}/../ietf/manage.py graph_models --exclude="$proxy,$legacy" --title "$title" $apps > $graph.dot && dot -Tpng $graph.dot > $graph.png
4241

4342
echo "Generate new model without names"
4443
graph="models-with-names"

ietf/meeting/forms.py

Lines changed: 8 additions & 2 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"):
@@ -243,7 +249,7 @@ def __init__(self, *args, **kwargs):
243249
if 'group' in kwargs:
244250
self.group = kwargs.pop('group')
245251
if 'is_approved' in kwargs:
246-
self.is_approved = kwargs.pop('is_approved')
252+
self.is_approved_or_virtual = kwargs.pop('is_approved_or_virtual')
247253
super(InterimSessionModelForm, self).__init__(*args, **kwargs)
248254
self.is_edit = bool(self.instance.pk)
249255
# setup fields that aren't intrinsic to the Session object
@@ -267,7 +273,7 @@ def save(self, *args, **kwargs):
267273
"""NOTE: as the baseform of an inlineformset self.save(commit=True)
268274
never gets called"""
269275
session = super(InterimSessionModelForm, self).save(commit=kwargs.get('commit', True))
270-
if self.is_approved:
276+
if self.is_approved_or_virtual:
271277
session.status_id = 'scheda'
272278
else:
273279
session.status_id = 'apprw'

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
@@ -599,7 +599,7 @@ def test_interim_approve_by_ad(self):
599599
for session in meeting.session_set.all():
600600
self.assertEqual(session.status.slug, 'scheda')
601601
self.assertEqual(len(outbox), length_before + 1)
602-
self.assertTrue('Approved' in outbox[-1]['Subject'])
602+
self.assertTrue('ready for announcement' in outbox[-1]['Subject'])
603603

604604
def test_interim_approve_by_secretariat(self):
605605
make_meeting_test_data()
@@ -682,7 +682,7 @@ def test_interim_request_options(self):
682682
len(q("#id_group option")) - 1) # -1 for options placeholder
683683

684684

685-
def test_interim_request_single(self):
685+
def test_interim_request_single_virtual(self):
686686
make_meeting_test_data()
687687
group = Group.objects.get(acronym='mars')
688688
date = datetime.date.today() + datetime.timedelta(days=30)
@@ -692,7 +692,8 @@ def test_interim_request_single(self):
692692
remote_instructions = 'Use webex'
693693
agenda = 'Intro. Slides. Discuss.'
694694
agenda_note = 'On second level'
695-
self.client.login(username="secretary", password="secretary+password")
695+
length_before = len(outbox)
696+
self.client.login(username="marschairman", password="marschairman+password")
696697
data = {'group':group.pk,
697698
'meeting_type':'single',
698699
'city':'',
@@ -710,7 +711,6 @@ def test_interim_request_single(self):
710711
'session_set-MAX_NUM_FORMS':1000}
711712

712713
r = self.client.post(urlreverse("ietf.meeting.views.interim_request"),data)
713-
714714
self.assertRedirects(r,urlreverse('ietf.meeting.views.upcoming'))
715715
meeting = Meeting.objects.order_by('id').last()
716716
self.assertEqual(meeting.type_id,'interim')
@@ -722,6 +722,7 @@ def test_interim_request_single(self):
722722
session = meeting.session_set.first()
723723
self.assertEqual(session.remote_instructions,remote_instructions)
724724
self.assertEqual(session.agenda_note,agenda_note)
725+
self.assertEqual(session.status.slug,'scheda')
725726
timeslot = session.official_timeslotassignment().timeslot
726727
self.assertEqual(timeslot.time,dt)
727728
self.assertEqual(timeslot.duration,duration)
@@ -730,6 +731,10 @@ def test_interim_request_single(self):
730731
doc = session.materials.first()
731732
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
732733
self.assertTrue(os.path.exists(path))
734+
# check notice to secretariat
735+
self.assertEqual(len(outbox), length_before + 1)
736+
self.assertTrue('interim meeting ready for announcement' in outbox[-1]['Subject'])
737+
self.assertTrue('iesg-secretary@ietf.org' in outbox[-1]['To'])
733738

734739
def test_interim_request_single_in_person(self):
735740
make_meeting_test_data()

ietf/meeting/views.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1319,6 +1319,7 @@ def interim_request(request):
13191319
if form.is_valid() and formset.is_valid():
13201320
group = form.cleaned_data.get('group')
13211321
is_approved = form.cleaned_data.get('approved', False)
1322+
is_virtual = form.is_virtual()
13221323
meeting_type = form.cleaned_data.get('meeting_type')
13231324

13241325
# pre create meeting
@@ -1330,14 +1331,16 @@ def interim_request(request):
13301331
InterimSessionModelForm,
13311332
user=request.user,
13321333
group=group,
1333-
is_approved=is_approved))
1334+
is_approved_or_virtual=(is_approved or is_virtual)))
13341335
formset = SessionFormset(instance=meeting, data=request.POST)
13351336
formset.is_valid()
13361337
formset.save()
13371338
sessions_post_save(formset)
13381339

1339-
if not is_approved:
1340+
if not (is_approved or is_virtual):
13401341
send_interim_approval_request(meetings=[meeting])
1342+
elif not has_role(request.user, 'Secretariat'):
1343+
send_interim_announcement_request(meeting=meeting)
13411344

13421345
# series require special handling, each session gets it's own
13431346
# meeting object we won't see this on edit because series are
@@ -1348,7 +1351,7 @@ def interim_request(request):
13481351
InterimSessionModelForm,
13491352
user=request.user,
13501353
group=group,
1351-
is_approved=is_approved))
1354+
is_approved_or_virtual=(is_approved or is_virtual)))
13521355
formset = SessionFormset(instance=Meeting(), data=request.POST)
13531356
formset.is_valid() # re-validate
13541357
for session_form in formset.forms:
@@ -1365,8 +1368,10 @@ def interim_request(request):
13651368
series.append(meeting)
13661369
sessions_post_save([session_form])
13671370

1368-
if not is_approved:
1371+
if not (is_approved or is_virtual):
13691372
send_interim_approval_request(meetings=series)
1373+
elif not has_role(request.user, 'Secretariat'):
1374+
send_interim_announcement_request(meeting=meeting)
13701375

13711376
messages.success(request, 'Interim meeting request submitted')
13721377
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)