Initialize Empty-Schedule with special sessions from previous meeting on creation. Fixes #1500. Commit ready for merge.

- Legacy-Id: 13588
This commit is contained in:
Ryan Cross 2017-06-12 21:39:52 +00:00
parent 356fa71a6a
commit 8a98ba2516
5 changed files with 47 additions and 4 deletions

View file

@ -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)
@ -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,
@ -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()

View file

@ -137,7 +137,7 @@ class ApiTests(TestCase):
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"]}
@ -153,7 +153,7 @@ class ApiTests(TestCase):
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

View file

@ -777,7 +777,7 @@ class InterimTests(TestCase):
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)

View file

@ -83,6 +83,20 @@ class SecrMeetingTestCase(TestCase):
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"

View file

@ -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)