Example #1
0
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"]
Example #8
0
def test_emptydate():
    result = timetable([], [time(14,10), time(10,30)])
    assert result == []
Example #9
0
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)]
Example #10
0
def test_allempty():
    result = timetable([], [])
    assert result == []
Example #11
0
def test_emptytime():
    result = timetable([date(2019,9,27), date(2019,9,30)], [])
    assert result == []
Example #12
0
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")
Example #13
0
def test_empty():
    timetable([], []) == []
Example #14
0
def test_injective():
    timetable([date(2020, 3, 15)],
              [time(12, 00)]) == [datetime(2020, 3, 15, 12, 00)]
Example #15
0
def send_timetable(message):
    for reply in timetable.timetable():
        bot.reply_to(
            message,
            reply
            )
Example #16
0
def send_next(message):
    bot.reply_to(
            message,
            timetable.timetable()
            )
Example #17
0
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)])