Skip to content

Commit 8a98ba2

Browse files
committed
Initialize Empty-Schedule with special sessions from previous meeting on creation. Fixes ietf-tools#1500. Commit ready for merge.
- Legacy-Id: 13588
1 parent 356fa71 commit 8a98ba2

5 files changed

Lines changed: 47 additions & 4 deletions

File tree

ietf/meeting/test_data.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ def make_meeting_test_data(meeting=None):
5050
asname = RoomResourceName.objects.get(slug='audiostream')
5151
UrlResource.objects.create(name=asname, room=room, url='http://ietf{number}streaming.dnsalias.net/ietf/ietf{number}1.m3u'.format(number=meeting.number))
5252

53-
# another room
53+
# other rooms
5454
breakfast_room = Room.objects.create(meeting=meeting, name="Breakfast Room", capacity=40)
5555
breakfast_room.session_types.add("lead")
56+
break_room = Room.objects.create(meeting=meeting, name="Break Area", capacity=500)
57+
break_room.session_types.add("break")
58+
reg_room = Room.objects.create(meeting=meeting, name="Registration Area", capacity=500)
59+
reg_room.session_types.add("reg")
5660

5761
# slots
5862
session_date = meeting.date + datetime.timedelta(days=1)
@@ -65,6 +69,12 @@ def make_meeting_test_data(meeting=None):
6569
breakfast_slot = TimeSlot.objects.create(meeting=meeting, type_id="lead", location=breakfast_room,
6670
duration=datetime.timedelta(minutes=90),
6771
time=datetime.datetime.combine(session_date, datetime.time(7,0)))
72+
reg_slot = TimeSlot.objects.create(meeting=meeting, type_id="reg", location=reg_room,
73+
duration=datetime.timedelta(minutes=480),
74+
time=datetime.datetime.combine(session_date, datetime.time(9,0)))
75+
break_slot = TimeSlot.objects.create(meeting=meeting, type_id="break", location=break_room,
76+
duration=datetime.timedelta(minutes=90),
77+
time=datetime.datetime.combine(session_date, datetime.time(7,0)))
6878
# mars WG
6979
mars = Group.objects.get(acronym='mars')
7080
mars_session = Session.objects.create(meeting=meeting, group=mars,
@@ -91,6 +101,22 @@ def make_meeting_test_data(meeting=None):
91101
SchedTimeSessAssignment.objects.create(timeslot=breakfast_slot, session=iesg_session, schedule=schedule)
92102
# No breakfast on unofficial schedule
93103

104+
# Registration
105+
reg_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="secretariat"),
106+
name="Registration", attendees=250,
107+
requested_by=system_person, status_id="schedw",
108+
requested_duration=datetime.timedelta(minutes=480),
109+
scheduled=datetime.datetime.now(),type_id="reg")
110+
SchedTimeSessAssignment.objects.create(timeslot=reg_slot, session=reg_session, schedule=schedule)
111+
112+
# Break
113+
break_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="secretariat"),
114+
name="Morning Break", attendees=250,
115+
requested_by=system_person, status_id="schedw",
116+
requested_duration=datetime.timedelta(minutes=30),
117+
scheduled=datetime.datetime.now(),type_id="break")
118+
SchedTimeSessAssignment.objects.create(timeslot=break_slot, session=break_session, schedule=schedule)
119+
94120
meeting.agenda = schedule
95121
meeting.save()
96122

ietf/meeting/tests_api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def test_get_room_json(self):
137137

138138
def test_create_new_room(self):
139139
meeting = make_meeting_test_data()
140-
timeslots_before = meeting.timeslot_set.count()
140+
timeslots_before = meeting.timeslot_set.filter(type='session').count()
141141
url = urlreverse("ietf.meeting.ajax.timeslot_roomsurl", kwargs=dict(num=meeting.number))
142142

143143
post_data = { "name": "new room", "capacity": "50" , "resources": [], "session_types":["session"]}
@@ -153,7 +153,7 @@ def test_create_new_room(self):
153153
self.assertEqual(r.status_code, 302)
154154
self.assertTrue(meeting.room_set.filter(name="new room"))
155155

156-
timeslots_after = meeting.timeslot_set.count()
156+
timeslots_after = meeting.timeslot_set.filter(type='session').count()
157157
# It's not clear that what that ajax function is doing is the right thing to do,
158158
# but it currently makes a new timeslot for any existing timeslot.
159159
# The condition tested below relies on the timeslots before this test all having different start and end times

ietf/meeting/tests_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ def test_upcoming_ical(self):
777777
r = self.client.get(url)
778778
self.assertEqual(r.status_code, 200)
779779
self.assertEqual(r.get('Content-Type'), "text/calendar")
780-
self.assertEqual(r.content.count('UID'), 5)
780+
self.assertEqual(r.content.count('UID'), 7)
781781
# check filtered output
782782
url = url + '?filters=mars'
783783
r = self.client.get(url)

ietf/secr/meetings/tests.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,20 @@ def test_add_meeting(self):
8383
response = self.client.post(url, post_data, follow=True)
8484
self.assertEqual(response.status_code, 200)
8585
self.assertEqual(Meeting.objects.count(),count + 1)
86+
new_meeting = Meeting.objects.get(number=number)
87+
88+
# ensure new schedule is populated with specials sessions from previous meeting
89+
self.assertTrue(new_meeting.agenda)
90+
self.assertTrue(meeting.agenda.assignments.filter(timeslot__type='break').count() > 0)
91+
self.assertEqual(
92+
meeting.agenda.assignments.filter(timeslot__type='break').count(),
93+
new_meeting.agenda.assignments.filter(timeslot__type='break').count()
94+
)
95+
self.assertTrue(meeting.agenda.assignments.filter(timeslot__type='reg').count() > 0)
96+
self.assertEqual(
97+
meeting.agenda.assignments.filter(timeslot__type='reg').count(),
98+
new_meeting.agenda.assignments.filter(timeslot__type='reg').count()
99+
)
86100

87101
def test_edit_meeting(self):
88102
"Edit Meeting"

ietf/secr/meetings/views.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,9 @@ def add(request):
314314
meeting.session_request_lock_message = previous_meeting.session_request_lock_message
315315
meeting.save()
316316

317+
# copy special sessions from previous meeting
318+
build_nonsession(meeting,schedule)
319+
317320
# Create Physical new meeting directory and subdirectories
318321
make_materials_directories(meeting)
319322

0 commit comments

Comments
 (0)