def test_example(): timetable([date(2019, 9, 27), date(2019, 9, 30)], [time(14, 10), time(10, 30)]) == [ datetime(2019, 9, 27, 10, 30), datetime(2019, 9, 27, 14, 10), datetime(2019, 9, 30, 10, 30), datetime(2019, 9, 30, 14, 10) ]
def test_for_timetable(): assert (timetable([date(2019, 9, 27)], [time(14, 10)]) == [ datetime.datetime(2019, 9, 27, 14, 10) ]) assert (timetable([date(2019, 9, 27), date(2019, 9, 30)], [time(14, 10), time(10, 30)]) == [ datetime.datetime(2019, 9, 27, 10, 30), datetime.datetime(2019, 9, 27, 14, 10), datetime.datetime(2019, 9, 30, 10, 30), datetime.datetime(2019, 9, 30, 14, 10) ])
def get_timetable(self, start, end, stop_categories='1-7'): self.header = self.get_header() eva_numbers = self.get_eva_numbers(stop_categories) trips = self.get_trips(start, end, eva_numbers) return timetable(start, end, trips)
def test_example_2(): assert timetable([date(2018,3,12), date(2019,1,31)], [time(21,50), time(21,51)]) == [datetime(2018,3,12,21,50), datetime(2018,3,12,21,51), datetime(2019,1,31,21,50), datetime(2019,1,31,21,51)]
def test_example_4(): assert timetable([date(2003,5,16)], [time(4,44), time(13,36), time(11,23)]) == [datetime(2003,5,16,4,44),datetime(2003,5,16,11,23),datetime(2003,5,16,13,36)]
def test_example_3(): assert timetable([date(1976,2,21), date(1957,7,1), date(1947,12,23)], [time(23,59), time(12,25)]) == [datetime(1947,12,23,12,25),datetime(1947,12,23,23,59),datetime(1957,7,1,12,25),datetime(1957,7,1,23,59),datetime(1976,2,21,12,25),datetime(1976,2,21,23,59)]
userData = row refreshToken = row["refresh_token"] accessTokenData = GoogleOAuth.refresh(refreshToken) accessToken = accessTokenData.access_token # Calculate a datetime for the starting day of the week weekDateTime = datetime.strptime(str(startYear) + "-" + str(x) + "-" + "1", "%Y-%W-%w") week = x url = "https://www.lectio.dk/lectio/%s/SkemaNy.aspx?type=elev&elevid=%s&week=%s&forcemobile=0" % (userData["school_id"], userData["lectio_user_id"], str(week)+str(year)) timeElements = [] timeElements = timetable.timetable({ "school_id" : userData["school_id"], "student_id" : userData["lectio_user_id"], "branch_id" : userData["branch_id"] }, url, int(week), int(year))["timetable"] hourElements = [] for element in timeElements: if not element["status"] == "cancelled" and not element["startTime"] is None and not element["endTime"] is None: group = "" teacher = "" for team in element["teams"]: if group == "": group = team["title"] else: group = group + ", " + team["title"]
def test_emptydate(): result = timetable([], [time(14,10), time(10,30)]) assert result == []
def test_document(): result = timetable([date(2019,9,27), date(2019,9,30)], [time(14,10), time(10,30)]) assert result == [datetime(2019,9,27,10,30), datetime(2019,9,27,14,10), datetime(2019,9,30,10,30), datetime(2019,9,30,14,10)]
def test_allempty(): result = timetable([], []) assert result == []
def test_emptytime(): result = timetable([date(2019,9,27), date(2019,9,30)], []) assert result == []
def importPrivateTimetable ( school_id, branch_id, student_id, username, password, number_of_weeks = 1 ): weeksInfo = functions.weeks(number_of_weeks) session = authenticate.authenticate({ "school_id" : school_id, "branch_id" : branch_id, "username" : username, "password" : password }) if session == False: error.log(__file__, False, "authenticate") return False url = timetable_url("student", school_id, branch_id, student_id) for week in weeksInfo["weeks"]: # If the year has to be incremented, increment it if week < weeksInfo["current_week"]: year = weeksInfo["start_year"]+1 else: year = weeksInfo["start_year"] weekDateTime = datetime.strptime(str(year) + "-" + str(week) + "-" + "1", "%Y-%W-%w") data = None try: data = timetable.timetable({ "school_id" : school_id, "student_id" : student_id, "branch_id" : branch_id }, url, int(week), int(year), session) except Exception, e: error.log(__file__, False, str(e)) if data is None: error.log(__file__, False, "Unknown Object") return if not "status" in data: error.log(__file__, False, "Unknown Object") return if data["status"] == "ok": unique = { "school_id" : str(school_id), "branch_id" : str(branch_id) } element = { "school_id" : str(school_id), "branch_id" : str(branch_id), "module_info" : data["module_info"] } status = sync.sync(db.schools, unique, element) for element in data["timetable"]: teachers = [] teams = [] if element["type"] == "school": for row in element["teachers"]: status = sync.sync(db.persons, {"teacher_id" : row["teacher_id"]}, {"teacher_id" : row["teacher_id"]}) teachers.append(status["_id"]) for row in element["teams"]: status = sync.sync(db.team_elements, {"team_element_id" : row["team_id"]}, {"team_element_id" : row["team_id"]}) teams.append(status["_id"]) unique = { "activity_id" : element["activity_id"], #"type" : "private" } element = { "teachers" : teachers, "activity_id" : str(element["activity_id"]), "school_id" : str(element["school_id"]), "branch_id" : str(branch_id), "text" : element["text"], "status" : element["status"], "start" : element["startTime"], "end" : element["endTime"], "event_type" : element["type"], "team_elements" : teams, "location_text" : element["location_text"], "room_text" : element["room_text"], #"type" : "private" } status = sync.sync(db.events, unique, element) # Launch Activity Info Scraper '''if sync.check_action_event(status) == True: # Launch Activity Info Sraper for url in sync.find_listeners('school', {"school" : school_id, "branch_id" : branch_id, "activity_id" : element["activity_id"]}): sync.send_event(url, "event", element) # Teachers # Teams # Students''' elif element["type"] == "exam": # Launch Exam Scraper print "Exam" elif element["type"] == "outgoing_censor": # Launch Outgoing censor scraper print "outgoing_censor" elif element["type"] == "private": # Launch Private scraper print "private" # Infomation Elements for element in data["information"]: if "activity_id" in element: unique = { "date" : element["date"], "activity_id" : element["activity_id"], "school_id" : school_id, "branch_id" : branch_id, "week" : week, "term" : data["term"]["value"] } element = { "date" : element["date"], "message" : element["message"], "activity_id" : element["activity_id"], "status" : element["status"], "school_id" : school_id, "branch_id" : branch_id, "week" : week, "term" : data["term"]["value"] } else: unique = { "date" : element["date"], "message" : element["message"], "school_id" : school_id, "branch_id" : branch_id, "week" : week, "term" : data["term"]["value"] } element = { "date" : element["date"], "message" : element["message"], "school_id" : school_id, "branch_id" : branch_id, "week" : week, "term" : data["term"]["value"] } status = sync.sync(db.information, unique, element) if sync.check_action_event(status) == True: for url in sync.find_listeners('school', {"school" : school_id, "branch_id" : branch_id}): sync.send_event(url, "information", element) # Information Elements removed '''deleted = sync.find_deleted(db.information, {"school_id" : school_id, "branch_id" : branch_id, "term" : data["term"]["value"]}, ["message", "date", "week", "term", "school_id", "branch_id"], data["information"]) for url in sync.find_listeners('school', {"school" : school_id, "branch_id" : branch_id}): sync.send_event(url, "information_deleted", element)''' else: if "error" in data: error.log(__file__, False, data["error"]) else: error.log(__file__, False, "Unknown Error")
def test_empty(): timetable([], []) == []
def test_injective(): timetable([date(2020, 3, 15)], [time(12, 00)]) == [datetime(2020, 3, 15, 12, 00)]
def send_timetable(message): for reply in timetable.timetable(): bot.reply_to( message, reply )
def send_next(message): bot.reply_to( message, timetable.timetable() )
def test_invalid_time(): with pytest.raises(ValueError, match = r".*"): result = timetable([date(2019,9,27), date(2019,9,30)], [time(25,10), time(10,30)])