Skip to content

Commit a47fba8

Browse files
committed
Fix issue where new non-session location field value isn't saved. Fixes ietf-tools#2625. Commit ready for merge.
- Legacy-Id: 15715
1 parent 542a85d commit a47fba8

5 files changed

Lines changed: 100 additions & 77 deletions

File tree

ietf/secr/meetings/tests.py

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from ietf.person.models import Person
1616
from ietf.secr.meetings.forms import get_times
1717
from ietf.utils.mail import outbox
18-
from ietf.utils.test_utils import TestCase
18+
from ietf.utils.test_utils import TestCase
1919

2020

2121
class SecrMeetingTestCase(TestCase):
@@ -25,14 +25,14 @@ def setUp(self):
2525
settings.SECR_PROCEEDINGS_DIR = self.proceedings_dir
2626
self.saved_agenda_path = settings.AGENDA_PATH
2727
settings.AGENDA_PATH = self.proceedings_dir
28-
28+
2929
self.bluesheet_dir = self.tempdir('bluesheet')
3030
self.bluesheet_path = os.path.join(self.bluesheet_dir,'blue_sheet.rtf')
3131
self.saved_secr_blue_sheet_path = settings.SECR_BLUE_SHEET_PATH
3232
settings.SECR_BLUE_SHEET_PATH = self.bluesheet_path
3333

3434
self.materials_dir = self.tempdir('materials')
35-
35+
3636
def tearDown(self):
3737
settings.SECR_PROCEEDINGS_DIR = self.saved_secr_proceedings_dir
3838
settings.AGENDA_PATH = self.saved_agenda_path
@@ -61,7 +61,7 @@ def test_view(self):
6161
self.assertEqual(response.status_code, 200)
6262
q = PyQuery(response.content)
6363
self.assertEqual(len(q('#id_schedule_selector option')),3)
64-
64+
6565
def test_add_meeting(self):
6666
"Add Meeting"
6767
meeting = make_meeting_test_data()
@@ -85,7 +85,7 @@ def test_add_meeting(self):
8585
self.assertEqual(response.status_code, 200)
8686
self.assertEqual(Meeting.objects.count(),count + 1)
8787
new_meeting = Meeting.objects.get(number=number)
88-
88+
8989
# ensure new schedule is populated with specials sessions from previous meeting
9090
self.assertTrue(new_meeting.agenda)
9191
self.assertTrue(meeting.agenda.assignments.filter(timeslot__type='break').count() > 0)
@@ -129,12 +129,12 @@ def test_blue_sheets_upload(self):
129129
"Test Bluesheets"
130130
meeting = make_meeting_test_data()
131131
os.makedirs(os.path.join(self.proceedings_dir,str(meeting.number),'bluesheets'))
132-
132+
133133
url = reverse('ietf.secr.meetings.views.blue_sheet',kwargs={'meeting_id':meeting.number})
134134
self.client.login(username="secretary", password="secretary+password")
135135
response = self.client.get(url)
136136
self.assertEqual(response.status_code, 200)
137-
137+
138138
# test upload
139139
group = Group.objects.filter(type='wg',state='active').first()
140140
file = StringIO('dummy bluesheet')
@@ -152,7 +152,7 @@ def test_blue_sheets_generate(self):
152152
response = self.client.post(url)
153153
self.assertEqual(response.status_code, 302)
154154
self.assertTrue(os.path.exists(self.bluesheet_path))
155-
155+
156156
def test_notifications(self):
157157
"Test Notifications"
158158
meeting = make_meeting_test_data()
@@ -162,7 +162,7 @@ def test_notifications(self):
162162
self.assertEqual(response.status_code, 200)
163163
q = PyQuery(response.content)
164164
self.assertEqual(q('#id_notification_list').html(),'ames, mars')
165-
165+
166166
# test that only changes since last notification show up
167167
mars_group = Group.objects.get(acronym='mars')
168168
ames_group = Group.objects.get(acronym='ames')
@@ -179,21 +179,21 @@ def test_notifications(self):
179179
self.assertEqual(response.status_code, 200)
180180
q = PyQuery(response.content)
181181
self.assertEqual(q('#id_notification_list').html(),'ames')
182-
182+
183183
# test that email goes out
184184
mailbox_before = len(outbox)
185185
self.client.login(username="secretary", password="secretary+password")
186186
response = self.client.post(url)
187187
self.assertEqual(response.status_code, 302)
188188
self.assertEqual(len(outbox), mailbox_before + 1)
189-
189+
190190
def test_meetings_select(self):
191191
make_meeting_test_data()
192192
url = reverse('ietf.secr.meetings.views.select',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
193193
self.client.login(username="secretary", password="secretary+password")
194194
response = self.client.get(url)
195195
self.assertEqual(response.status_code, 200)
196-
196+
197197
def test_meetings_rooms(self):
198198
meeting = make_meeting_test_data()
199199
url = reverse('ietf.secr.meetings.views.rooms',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
@@ -202,7 +202,7 @@ def test_meetings_rooms(self):
202202
self.assertEqual(response.status_code, 200)
203203
q = PyQuery(response.content)
204204
self.assertEqual(len(q("#id_rooms_table tr input[type='checkbox']")),meeting.room_set.count())
205-
205+
206206
# test delete
207207
# first unschedule sessions so we can delete
208208
SchedTimeSessAssignment.objects.filter(schedule=meeting.agenda).delete()
@@ -219,7 +219,7 @@ def test_meetings_rooms(self):
219219
response = self.client.post(url, post_dict)
220220
self.assertEqual(response.status_code, 302)
221221
self.assertEqual(Room.objects.filter(meeting=meeting).count(),0)
222-
222+
223223
def test_meetings_times(self):
224224
make_meeting_test_data()
225225
url = reverse('ietf.secr.meetings.views.times',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
@@ -239,7 +239,7 @@ def test_meetings_times_delete(self):
239239
meeting = make_meeting_test_data()
240240
qs = TimeSlot.objects.filter(meeting=meeting,type='session')
241241
before = qs.count()
242-
expected_deletion_count = qs.filter(time=qs.first().time).count()
242+
expected_deletion_count = qs.filter(time=qs.first().time).count()
243243
url = reverse('ietf.secr.meetings.views.times_delete',kwargs={
244244
'meeting_id':meeting.number,
245245
'schedule_name':meeting.agenda.name,
@@ -256,7 +256,7 @@ def test_meetings_times_delete(self):
256256
self.assertRedirects(response, redirect_url)
257257
after = TimeSlot.objects.filter(meeting=meeting,type='session').count()
258258
self.assertEqual(after,before - expected_deletion_count)
259-
259+
260260
def test_meetings_times_edit(self):
261261
meeting = make_meeting_test_data()
262262
timeslot = TimeSlot.objects.filter(meeting=meeting,type='session').first()
@@ -274,14 +274,37 @@ def test_meetings_times_edit(self):
274274
})
275275
self.assertEqual(response.status_code, 302)
276276
self.assertTrue(TimeSlot.objects.filter(meeting=meeting,name='Testing'))
277-
277+
278278
def test_meetings_nonsession(self):
279279
make_meeting_test_data()
280280
url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
281281
self.client.login(username="secretary", password="secretary+password")
282282
response = self.client.get(url)
283283
self.assertEqual(response.status_code, 200)
284-
284+
285+
def test_meetings_nonsession_add_valid(self):
286+
meeting = make_meeting_test_data()
287+
room = meeting.room_set.first()
288+
group = Group.objects.get(acronym='secretariat')
289+
url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
290+
self.client.login(username="secretary", password="secretary+password")
291+
response = self.client.post(url, {
292+
'day':'1',
293+
'time':'08:00',
294+
'duration':'02:00',
295+
'name':'Testing',
296+
'short':'test',
297+
'type':'reg',
298+
'group':group.pk,
299+
'location': room.pk,
300+
})
301+
print response.content
302+
self.assertRedirects(response, url)
303+
session = Session.objects.filter(meeting=meeting, name='Testing').first()
304+
self.assertTrue(session)
305+
306+
self.assertEqual(session.timeslotassignments.first().timeslot.location, room)
307+
285308
def test_meetings_nonsession_add_invalid(self):
286309
make_meeting_test_data()
287310
group = Group.objects.get(acronym='secretariat')
@@ -396,4 +419,3 @@ def test_get_times(self):
396419
values = [ x[0] for x in times ]
397420
self.assertTrue(times)
398421
self.assertTrue(timeslot.time.strftime('%H%M') in values)
399-

0 commit comments

Comments
 (0)