def deScheduleTalk(self): day = self.request.get("daysList") track = self.request.get("selectedSlotTrack") slot = datetime.strptime(self.request.get("selectedSlot"), "%H:%M:%S").time() schedule.get_conference_schedule( self.get_crrt_conference_key()).get().clear_talk(day, track, slot)
def scheduleTalk(self): day = self.request.get("daysList") track = self.request.get("selectedSlotTrack") slot = datetime.strptime(self.request.get("selectedSlot"), "%H:%M:%S").time() sub_key = self.request.get("selectedTalkKey") schedule.get_conference_schedule( self.get_crrt_conference_key()).get().assign_talk( sub_key, day, track, slot)
def removeElements(self): sched_key = schedule.get_conference_schedule( self.get_crrt_conference_key()) for safe_key in self.request.get_all("elementSelect"): key = ndb.Key(urlsafe=safe_key) key.delete()
def testGetSchedule(self): # get conference will either retried existing schedule_lib or make a new one sched_key = schedule.get_conference_schedule(self.c.key) self.assertNotEquals(None, sched_key) sched = sched_key.get() self.assertEquals([], sched.day_names())
def mkExport(self): url = schedexport.schedule_to_excel( schedule.get_conference_schedule( self.get_crrt_conference_key()).get()) rpt_key = reportrecord.mk_report_record(self.get_crrt_conference_key(), "Schedule", url) self.redirect("/exportspage?newrpt=" + rpt_key.urlsafe())
def testOrderedSlots(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") self.assertEquals({}, sched.slots("Friday")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 30), datetime.time(9, 30), "Nine thirty")) sched.add_slot( "Friday", schedule.Slot(datetime.time(8, 30), datetime.time(8, 30), "Eight thirty")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 15), datetime.time(9, 15), "Nine ffiteen")) self.assertEquals([ datetime.time(8, 30), datetime.time(9, 0), datetime.time(9, 15), datetime.time(9, 30) ], sched.orderd_slot_keys("Friday"))
def testAssignments(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.add_slot( "Friday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Ten")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(10, 0))) sched.add_slot( "Friday", schedule.Slot(datetime.time(11, 0), datetime.time(11, 30), "Elevent")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(11, 0))) sched.assign_talk("Random talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Random talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.assign_talk("Another talk", "Friday", "Track1", datetime.time(10, 0)) self.assertEquals( "Another talk", sched.get_assignment("Friday", "Track1", datetime.time(10, 0))) sched.assign_talk("Last talk", "Friday", "Track1", datetime.time(11, 0)) self.assertEquals( "Last talk", sched.get_assignment("Friday", "Track1", datetime.time(11, 0))) sched.assign_talk( "No such slot - accidentally supported but shouldnt happen talk", "Friday", "Track1", datetime.time(12, 0)) self.assertEquals( "No such slot - accidentally supported but shouldnt happen talk", sched.get_assignment("Friday", "Track1", datetime.time(12, 0))) sched.assign_talk("Allan talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Allan talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(13, 0)))
def get(self): conf_key = self.get_crrt_conference_key() self.write_page( 'schedule_lib/elementspage.html', { "elements": schedelement.retreieve_elements( schedule.get_conference_schedule(conf_key)), })
def get(self): conf_key = self.get_crrt_conference_key() sched = schedule.get_conference_schedule(conf_key).get() selected_day = self.selected_day(sched) self.write_page('schedule_lib/scheduleconfigpage.html', { "sched": sched, "selectedDay": selected_day, })
def test_schedule_to_excel(self, mock_storage_open, mock_sheet_write, mock_merge): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Monday") sched.add_track("Monday", "Software") sched.add_track("Monday", "Hardware") sched.add_slot( "Monday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 30), "Tracks")) sched.add_slot( "Monday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Plenary")) t = talk.mk_talk(None, "Random talk") sub = submissionrecord.make_submission(t, self.c.key, "Track1", "FormatX") sched.assign_talk(sub.urlsafe(), "Monday", "Hardware", datetime.time(9, 0)) self.assertEquals(0, mock_storage_open.call_count) url = schedexport.schedule_to_excel(sched) self.assertEquals(1, mock_storage_open.call_count) self.assertEquals(8, mock_sheet_write.call_count) self.assertEquals(1, mock_merge.call_count) self.assertEquals( "https:///mimas-aotb.appspot.com.storage.googleapis.com/Schedule", url[0:63]) self.assertEquals(".xlsx", url[len(url) - 5:]) self.assertEquals((0, 2, "Software"), mock_sheet_write.mock_calls[0][1][1:]) self.assertEquals((0, 3, "Hardware"), mock_sheet_write.mock_calls[1][1][1:]) self.assertEquals((1, 0, "09:00"), mock_sheet_write.mock_calls[2][1][1:]) self.assertEquals((1, 1, "09:30"), mock_sheet_write.mock_calls[3][1][1:]) self.assertEquals((1, 2, "Empty"), mock_sheet_write.mock_calls[4][1][1:]) self.assertEquals((1, 3, "Random talk"), mock_sheet_write.mock_calls[5][1][1:]) self.assertEquals((2, 0, "10:00"), mock_sheet_write.mock_calls[6][1][1:]) self.assertEquals((2, 1, "10:30"), mock_sheet_write.mock_calls[7][1][1:]) self.assertEquals((2, 2, 2, 3, "Empty"), mock_merge.mock_calls[0][1][1:])
def testTracks(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Thursday") self.assertEquals([], sched.tracks("Thursday")) sched.add_track("Thursday", "Software") self.assertEquals(["Software"], sched.tracks("Thursday")) sched.add_track("Thursday", "Hardware") self.assertEquals(["Software", "Hardware"], sched.tracks("Thursday")) sched.del_track("Thursday", "Software") self.assertEquals(["Hardware"], sched.tracks("Thursday"))
def testMakeRetrieve(self): sched_key = schedule.get_conference_schedule(self.c.key) self.assertEquals([], schedelement.retreieve_elements(sched_key)) element_key = schedelement.mk_element(sched_key, "Coffee") element = element_key.get() self.assertEquals("Coffee", element.title()) self.assertEquals([element], schedelement.retreieve_elements(sched_key)) element_key2 = schedelement.mk_element(sched_key, "Lunch") element2 = element_key2.get() self.assertEquals("Lunch", element2.title()) elements = schedelement.retreieve_elements(sched_key) sorted_elements = sorted(elements, key=(lambda t: t.title_db)) self.assertEquals([element, element2], sorted_elements)
def show_schedule_page(self, crrt_conference): sched = schedule.get_conference_schedule(crrt_conference.key).get() accepted_subs = submissions_aux.retrieve_by_final_decision_track_ordered( crrt_conference.key, "Accept") submissions = self.remove_scheduled(accepted_subs, sched.get_assigned_submissions()) tracks = crrt_conference.track_options() self.write_page( 'schedule_lib/schedulepage.html', { "sched": sched, "selectedDay": self.selectedDay(), "conf_tracks": tracks, "track_count": len(tracks), "elements": schedelement.retreieve_elements(sched.key), "submissions": submissions, "crrt_conference": crrt_conference, "talkTitle": schedule.talkTitle, })
def testClearAssignments(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.assign_talk("Random talk", "Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Random talk", sched.get_assignment("Friday", "Track1", datetime.time(9, 0))) sched.clear_talk("Friday", "Track1", datetime.time(9, 0)) self.assertEquals( "Empty", sched.get_assignment("Friday", "Track1", datetime.time(9, 0)))
def testSlots(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() sched.add_day("Friday") self.assertEquals({}, sched.slots("Friday")) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 30), "Tracks")) self.assertEquals(1, len(sched.slots("Friday"))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 0))) first_slot = sched.slots("Friday")[datetime.time(9, 0)] self.assertEquals(datetime.time(9, 0), first_slot.start_time) self.assertEquals(datetime.time(9, 30), first_slot.end_time) self.assertEquals("Tracks", first_slot.slot_type) sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 30), datetime.time(10, 30), "Plenary")) self.assertEquals(2, len(sched.slots("Friday"))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 30))) second_slot = sched.slots("Friday")[datetime.time(9, 30)] self.assertEquals(datetime.time(9, 30), second_slot.start_time) self.assertEquals(datetime.time(10, 30), second_slot.end_time) self.assertEquals("Plenary", second_slot.slot_type) sched.add_slot( "Friday", schedule.Slot(datetime.time(14, 0), datetime.time(15, 0), "Plenary")) self.assertEquals(3, len(sched.slots("Friday"))) sched.delete_slot_by_start_time("Friday", datetime.time(9, 30)) self.assertEquals(2, len(sched.slots("Friday"))) self.assertFalse(sched.slots("Friday").has_key(datetime.time(9, 30))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(9, 0))) self.assertTrue(sched.slots("Friday").has_key(datetime.time(14, 0)))
def testScheduleDays(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() self.assertEquals([], sched.day_names()) sched.add_day("Thursday") self.assertEquals(["Thursday"], sched.day_names()) sched.add_day("Friday") expected_days = ["Thursday", "Friday"] expected_days.sort() retrieved_days = sched.day_names() retrieved_days.sort() self.assertEquals(expected_days, retrieved_days) thursday = sched.get_day("Thursday") self.assertEquals([], sched.tracks("Thursday")) sched.delete_day("Thursday") self.assertEquals(["Friday"], sched.day_names()) sched.delete_day("Monday") self.assertEquals(["Friday"], sched.day_names())
def testListAssignedSubmissions(self): sched_key = schedule.get_conference_schedule(self.c.key) sched = sched_key.get() self.assertEquals([], sched.get_assigned_submissions()) sched.add_day("Friday") sched.add_slot( "Friday", schedule.Slot(datetime.time(9, 0), datetime.time(9, 0), "Nine")) sched.add_slot( "Friday", schedule.Slot(datetime.time(10, 0), datetime.time(10, 30), "Ten")) sched.add_slot( "Friday", schedule.Slot(datetime.time(11, 0), datetime.time(11, 30), "Elevent")) sched.assign_talk("Talk1", "Friday", "Track1", datetime.time(9, 0)) sched.assign_talk("Talk2", "Friday", "Track1", datetime.time(10, 0)) sched.assign_talk("Talk3", "Friday", "Track1", datetime.time(11, 0)) assigned_talks = sched.get_assigned_submissions() assigned_talks.sort() self.assertEquals(["Talk1", "Talk2", "Talk3"], assigned_talks)
def addNewElement(self): schedelement.mk_element( schedule.get_conference_schedule(self.get_crrt_conference_key()), self.request.get("newElement"))
def addCommonElements(self): sched_key = schedule.get_conference_schedule( self.get_crrt_conference_key()) schedelement.mk_element(sched_key, "Coffee") schedelement.mk_element(sched_key, "Lunch")