Skip to content

Commit f65335e

Browse files
committed
Fix issue with interim meeting series of more than two meetings. Changed to not send meeting change notifications for meetings not yet announced. Commit ready for merge.
- Legacy-Id: 11781
1 parent 4abb502 commit f65335e

3 files changed

Lines changed: 45 additions & 6 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,7 +1026,8 @@ def test_interim_request_cancel(self):
10261026
self.assertEqual(len(outbox), length_before + 1)
10271027
self.assertTrue('Interim Meeting Cancelled' in outbox[-1]['Subject'])
10281028

1029-
def test_interim_request_edit(self):
1029+
def test_interim_request_edit_no_notice(self):
1030+
'''Edit a request. No notice should go out if it hasn't been announced yet'''
10301031
make_meeting_test_data()
10311032
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
10321033
group = meeting.session_set.first().group
@@ -1058,13 +1059,50 @@ def test_interim_request_edit(self):
10581059
data.update(form_initial)
10591060
r = self.client.post(url, data)
10601061
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}))
1062+
self.assertEqual(len(outbox),length_before)
1063+
session = meeting.session_set.first()
1064+
timeslot = session.official_timeslotassignment().timeslot
1065+
self.assertEqual(timeslot.time,new_time)
1066+
1067+
def test_interim_request_edit(self):
1068+
'''Edit request. Send notice of change'''
1069+
make_meeting_test_data()
1070+
meeting = Meeting.objects.filter(type='interim', session__status='sched', session__group__acronym='mars').first()
1071+
group = meeting.session_set.first().group
1072+
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
1073+
# test unauthorized access
1074+
self.client.login(username="ameschairman", password="ameschairman+password")
1075+
r = self.client.get(url)
1076+
self.assertEqual(r.status_code, 403)
1077+
# test authorized use
1078+
login_testing_unauthorized(self, "secretary", url)
1079+
r = self.client.get(url)
1080+
self.assertEqual(r.status_code, 200)
1081+
# post changes
1082+
length_before = len(outbox)
1083+
form_initial = r.context['form'].initial
1084+
formset_initial = r.context['formset'].forms[0].initial
1085+
new_time = formset_initial['time'] + datetime.timedelta(hours=1)
1086+
data = {'group':group.pk,
1087+
'meeting_type':'single',
1088+
'session_set-0-id':meeting.session_set.first().id,
1089+
'session_set-0-date':formset_initial['date'].strftime('%Y-%m-%d'),
1090+
'session_set-0-time':new_time.strftime('%H:%M'),
1091+
'session_set-0-requested_duration':formset_initial['requested_duration'],
1092+
'session_set-0-remote_instructions':formset_initial['remote_instructions'],
1093+
#'session_set-0-agenda':formset_initial['agenda'],
1094+
'session_set-0-agenda_note':formset_initial['agenda_note'],
1095+
'session_set-TOTAL_FORMS':1,
1096+
'session_set-INITIAL_FORMS':1}
1097+
data.update(form_initial)
1098+
r = self.client.post(url, data)
1099+
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}))
10611100
self.assertEqual(len(outbox),length_before+1)
10621101
self.assertTrue('CHANGED' in outbox[-1]['Subject'])
10631102
session = meeting.session_set.first()
10641103
timeslot = session.official_timeslotassignment().timeslot
10651104
self.assertEqual(timeslot.time,new_time)
10661105

1067-
10681106
def test_interim_request_details_permissions(self):
10691107
make_meeting_test_data()
10701108
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()

ietf/meeting/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1329,7 +1329,7 @@ def interim_request_edit(request, number):
13291329
sessions_post_save(formset)
13301330

13311331
message = 'Interim meeting request saved'
1332-
if form.has_changed() or formset.has_changed():
1332+
if (form.has_changed() or formset.has_changed()) and meeting.session_set.filter(status='sched'):
13331333
send_interim_change_notice(request, meeting)
13341334
message = message + ' and change announcement sent'
13351335
messages.success(request, message)

ietf/static/ietf/js/meeting-interim-request.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,19 @@ var interimRequest = {
3535
var total = +totalField.val();
3636
var meeting_type = $('input[name="meeting_type"]:checked').val();
3737

38-
el.find(':input').each(function() {
38+
// increment formset counter
39+
template.find(':input').each(function() {
3940
var name = $(this).attr('name').replace('-' + (total-1) + '-','-' + total + '-');
4041
var id = 'id_' + name;
4142
$(this).attr({'name': name, 'id': id}).val('');
4243
});
4344

44-
el.find('label').each(function() {
45+
template.find('label').each(function() {
4546
var newFor = $(this).attr('for').replace('-' + (total-1) + '-','-' + total + '-');
4647
$(this).attr('for', newFor);
4748
});
4849

49-
el.find('div.utc-time').each(function() {
50+
template.find('div.utc-time').each(function() {
5051
var newId = $(this).attr('id').replace('-' + (total-1) + '-','-' + total + '-');
5152
$(this).attr('id', newId);
5253
});

0 commit comments

Comments
 (0)