Skip to content

Commit

Permalink
Initialize Empty-Schedule with special sessions from previous meeting…
Browse files Browse the repository at this point in the history
… on creation. Fixes #1500.  Commit ready for merge.

 - Legacy-Id: 13588
  • Loading branch information
rpcross committed Jun 12, 2017
1 parent 356fa71 commit 8a98ba2
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 4 deletions.
28 changes: 27 additions & 1 deletion ietf/meeting/test_data.py
Expand Up @@ -50,9 +50,13 @@ def make_meeting_test_data(meeting=None):
asname = RoomResourceName.objects.get(slug='audiostream')
UrlResource.objects.create(name=asname, room=room, url='http://ietf{number}streaming.dnsalias.net/ietf/ietf{number}1.m3u'.format(number=meeting.number))

# another room
# other rooms
breakfast_room = Room.objects.create(meeting=meeting, name="Breakfast Room", capacity=40)
breakfast_room.session_types.add("lead")
break_room = Room.objects.create(meeting=meeting, name="Break Area", capacity=500)
break_room.session_types.add("break")
reg_room = Room.objects.create(meeting=meeting, name="Registration Area", capacity=500)
reg_room.session_types.add("reg")

# slots
session_date = meeting.date + datetime.timedelta(days=1)
Expand All @@ -65,6 +69,12 @@ def make_meeting_test_data(meeting=None):
breakfast_slot = TimeSlot.objects.create(meeting=meeting, type_id="lead", location=breakfast_room,
duration=datetime.timedelta(minutes=90),
time=datetime.datetime.combine(session_date, datetime.time(7,0)))
reg_slot = TimeSlot.objects.create(meeting=meeting, type_id="reg", location=reg_room,
duration=datetime.timedelta(minutes=480),
time=datetime.datetime.combine(session_date, datetime.time(9,0)))
break_slot = TimeSlot.objects.create(meeting=meeting, type_id="break", location=break_room,
duration=datetime.timedelta(minutes=90),
time=datetime.datetime.combine(session_date, datetime.time(7,0)))
# mars WG
mars = Group.objects.get(acronym='mars')
mars_session = Session.objects.create(meeting=meeting, group=mars,
Expand All @@ -91,6 +101,22 @@ def make_meeting_test_data(meeting=None):
SchedTimeSessAssignment.objects.create(timeslot=breakfast_slot, session=iesg_session, schedule=schedule)
# No breakfast on unofficial schedule

# Registration
reg_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="secretariat"),
name="Registration", attendees=250,
requested_by=system_person, status_id="schedw",
requested_duration=datetime.timedelta(minutes=480),
scheduled=datetime.datetime.now(),type_id="reg")
SchedTimeSessAssignment.objects.create(timeslot=reg_slot, session=reg_session, schedule=schedule)

# Break
break_session = Session.objects.create(meeting=meeting, group=Group.objects.get(acronym="secretariat"),
name="Morning Break", attendees=250,
requested_by=system_person, status_id="schedw",
requested_duration=datetime.timedelta(minutes=30),
scheduled=datetime.datetime.now(),type_id="break")
SchedTimeSessAssignment.objects.create(timeslot=break_slot, session=break_session, schedule=schedule)

meeting.agenda = schedule
meeting.save()

Expand Down
4 changes: 2 additions & 2 deletions ietf/meeting/tests_api.py
Expand Up @@ -137,7 +137,7 @@ def test_get_room_json(self):

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

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

timeslots_after = meeting.timeslot_set.count()
timeslots_after = meeting.timeslot_set.filter(type='session').count()
# It's not clear that what that ajax function is doing is the right thing to do,
# but it currently makes a new timeslot for any existing timeslot.
# The condition tested below relies on the timeslots before this test all having different start and end times
Expand Down
2 changes: 1 addition & 1 deletion ietf/meeting/tests_views.py
Expand Up @@ -777,7 +777,7 @@ def test_upcoming_ical(self):
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.get('Content-Type'), "text/calendar")
self.assertEqual(r.content.count('UID'), 5)
self.assertEqual(r.content.count('UID'), 7)
# check filtered output
url = url + '?filters=mars'
r = self.client.get(url)
Expand Down
14 changes: 14 additions & 0 deletions ietf/secr/meetings/tests.py
Expand Up @@ -83,6 +83,20 @@ def test_add_meeting(self):
response = self.client.post(url, post_data, follow=True)
self.assertEqual(response.status_code, 200)
self.assertEqual(Meeting.objects.count(),count + 1)
new_meeting = Meeting.objects.get(number=number)

# ensure new schedule is populated with specials sessions from previous meeting
self.assertTrue(new_meeting.agenda)
self.assertTrue(meeting.agenda.assignments.filter(timeslot__type='break').count() > 0)
self.assertEqual(
meeting.agenda.assignments.filter(timeslot__type='break').count(),
new_meeting.agenda.assignments.filter(timeslot__type='break').count()
)
self.assertTrue(meeting.agenda.assignments.filter(timeslot__type='reg').count() > 0)
self.assertEqual(
meeting.agenda.assignments.filter(timeslot__type='reg').count(),
new_meeting.agenda.assignments.filter(timeslot__type='reg').count()
)

def test_edit_meeting(self):
"Edit Meeting"
Expand Down
3 changes: 3 additions & 0 deletions ietf/secr/meetings/views.py
Expand Up @@ -314,6 +314,9 @@ def add(request):
meeting.session_request_lock_message = previous_meeting.session_request_lock_message
meeting.save()

# copy special sessions from previous meeting
build_nonsession(meeting,schedule)

# Create Physical new meeting directory and subdirectories
make_materials_directories(meeting)

Expand Down

0 comments on commit 8a98ba2

Please sign in to comment.