Skip to content

Commit 2386fa8

Browse files
committed
Merged in [11781] from rcross@amsl.com:
Fix issue with interim meeting series of more than two meetings. Changed to not send meeting change notifications for meetings not yet announced. - Legacy-Id: 11817 Note: SVN reference [11781] has been migrated to Git commit f65335e
2 parents 72d9017 + f65335e commit 2386fa8

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
@@ -1038,7 +1038,8 @@ def test_interim_request_cancel(self):
10381038
self.assertEqual(len(outbox), length_before + 1)
10391039
self.assertTrue('Interim Meeting Cancelled' in outbox[-1]['Subject'])
10401040

1041-
def test_interim_request_edit(self):
1041+
def test_interim_request_edit_no_notice(self):
1042+
'''Edit a request. No notice should go out if it hasn't been announced yet'''
10421043
make_meeting_test_data()
10431044
meeting = Meeting.objects.filter(type='interim', session__status='apprw', session__group__acronym='mars').first()
10441045
group = meeting.session_set.first().group
@@ -1070,13 +1071,50 @@ def test_interim_request_edit(self):
10701071
data.update(form_initial)
10711072
r = self.client.post(url, data)
10721073
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}))
1074+
self.assertEqual(len(outbox),length_before)
1075+
session = meeting.session_set.first()
1076+
timeslot = session.official_timeslotassignment().timeslot
1077+
self.assertEqual(timeslot.time,new_time)
1078+
1079+
def test_interim_request_edit(self):
1080+
'''Edit request. Send notice of change'''
1081+
make_meeting_test_data()
1082+
meeting = Meeting.objects.filter(type='interim', session__status='sched', session__group__acronym='mars').first()
1083+
group = meeting.session_set.first().group
1084+
url = urlreverse('ietf.meeting.views.interim_request_edit', kwargs={'number': meeting.number})
1085+
# test unauthorized access
1086+
self.client.login(username="ameschairman", password="ameschairman+password")
1087+
r = self.client.get(url)
1088+
self.assertEqual(r.status_code, 403)
1089+
# test authorized use
1090+
login_testing_unauthorized(self, "secretary", url)
1091+
r = self.client.get(url)
1092+
self.assertEqual(r.status_code, 200)
1093+
# post changes
1094+
length_before = len(outbox)
1095+
form_initial = r.context['form'].initial
1096+
formset_initial = r.context['formset'].forms[0].initial
1097+
new_time = formset_initial['time'] + datetime.timedelta(hours=1)
1098+
data = {'group':group.pk,
1099+
'meeting_type':'single',
1100+
'session_set-0-id':meeting.session_set.first().id,
1101+
'session_set-0-date':formset_initial['date'].strftime('%Y-%m-%d'),
1102+
'session_set-0-time':new_time.strftime('%H:%M'),
1103+
'session_set-0-requested_duration':formset_initial['requested_duration'],
1104+
'session_set-0-remote_instructions':formset_initial['remote_instructions'],
1105+
#'session_set-0-agenda':formset_initial['agenda'],
1106+
'session_set-0-agenda_note':formset_initial['agenda_note'],
1107+
'session_set-TOTAL_FORMS':1,
1108+
'session_set-INITIAL_FORMS':1}
1109+
data.update(form_initial)
1110+
r = self.client.post(url, data)
1111+
self.assertRedirects(r, urlreverse('ietf.meeting.views.interim_request_details', kwargs={'number': meeting.number}))
10731112
self.assertEqual(len(outbox),length_before+1)
10741113
self.assertTrue('CHANGED' in outbox[-1]['Subject'])
10751114
session = meeting.session_set.first()
10761115
timeslot = session.official_timeslotassignment().timeslot
10771116
self.assertEqual(timeslot.time,new_time)
10781117

1079-
10801118
def test_interim_request_details_permissions(self):
10811119
make_meeting_test_data()
10821120
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
@@ -1474,7 +1474,7 @@ def interim_request_edit(request, number):
14741474
sessions_post_save(formset)
14751475

14761476
message = 'Interim meeting request saved'
1477-
if form.has_changed() or formset.has_changed():
1477+
if (form.has_changed() or formset.has_changed()) and meeting.session_set.filter(status='sched'):
14781478
send_interim_change_notice(request, meeting)
14791479
message = message + ' and change announcement sent'
14801480
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)