def listSectionStatus(): try: requested = request.form r= Registrar("UPENN_OD_emmK_1000220", "2g0rbtdurlau4didkj9schee95") course = r.search({'course_id': requested['course_id']}) d = {} for x in course: l = [] s = x["section_id"] print ("section" + s) if x["is_closed"]: l.append("Closed") print "is_closed" else: l.append("Open") print "is _open" if (x["activity_description"] == "Lecture"): p = x["instructors"][0]["name"] elif (x["activity_description"] == "Recitation"): p = x["primary_instructor"] else: p = "" print "professor: " + p l.append(p) t = x["first_meeting_days"] print "time: " + t l.append(t) d[s] = l return render_template("courses.html", d = d) except ValueError as e: return render_template("courses.html", d={})
def test_filter_out_courses_where_prereq_not_met(self): r = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l") courses_taken = ["CIS 160", "CIS 110"] cis121 = r.section('cis', '121', '001') cis262 = r.section('cis', '262', '001') all_courses = [cis121, cis262] courses_eligble_for = courseComparator.filter_out_courses_where_prereq_not_met(all_courses, courses_taken) self.assertEqual(len(courses_eligble_for), 1)
def test_multiple_courses_some_conflicts(self): r = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l") cis262 = r.section('cis', '262', '001') cis320 = r.section('cis', '320', '001') cis380 = r.section('cis', '380', '001') econ001 = r.section('econ', '001', '205') all_courses = [cis320, cis380, econ001] remaing_courses = courseComparator.filter_out_courses_that_overlap(cis262, all_courses) self.assertEqual(len(remaing_courses), 1)
def get_opening(course): try: print "get_opening" r = Registrar("UPENN_OD_emmK_1000220", "2g0rbtdurlau4didkj9schee95") courses = r.search({'course_id': course['id']}) # runs once for c in courses: course['is_closed'] = (c['is_closed'] == True) return course except OSError: print "error in get_opening" except ValueError as e: print e
def load_all_courses(): r = Registrar("UPENN_OD_emoG_1000340", "7vgj93rojjmbuh3rrsgs7vc2ic") courses = r.search({'course_id': ""}) # runs once for c in courses: id = c['section_id'] is_closed = (c['is_closed'] == True) try: if (c["activity_description"] == "Lecture"): instructor = c["instructors"][0]["name"] elif (c["activity_description"] == "Recitation"): instructor = c["primary_instructor"] else: instructor = "" except IndexError: instructor = "" print "adding: " + id db.hmset(id, { "id": id, "is_closed": is_closed, "instructor": instructor })
def setUp(self): self.registrar = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l")
def __init__(self): self.registrar = Registrar('UPENN_OD_emFc_1001364', '6kl4eonkquheuti65e32qick6l') os.environ['PCR_AUTH_TOKEN'] = 'kdutFhMEbUaKdvQbcRKszEiwZeThFs'
def test_shared_meeting_days_some(self): r = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l") cis262 = r.section('cis', '262', '001') cis380 = r.section('cis', '380', '001') shared_days = courseComparator.shared_meeting_days(cis262, cis380) self.assertEqual(len(shared_days), 2)
def test_multiple_sections_of_same_course(self): r = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l") econ001001 = r.section('econ', '001', '001') econ001002 = r.section('econ', '001', '002') self.assertTrue(courseComparator.courses_overlap(econ001001, econ001002))
def test_single_course_conflict(self): r = Registrar("UPENN_OD_emFc_1001364", "6kl4eonkquheuti65e32qick6l") cis262 = r.section('cis', '262', '001') cis320 = r.section('cis', '320', '001') self.assertTrue(courseComparator.courses_overlap(cis262, cis320))
import redis import os from multiprocessing import Pool from functools import partial from twilio.rest import TwilioRestClient import twilio from penn.registrar import Registrar import time # setup database access pool = redis.ConnectionPool(host='grideye.redistogo.com', port=9195, db=0, password="******") db = redis.Redis(connection_pool=pool) r = Registrar("UPENN_OD_emoG_1000340", "7vgj93rojjmbuh3rrsgs7vc2ic") # gets course info from course registrar, updates database, and texts users def completeTask(): #pool = Pool(5) #updated_courses = pool.map(get_opening, get_old_courses()) updated_courses = [get_opening(course) for course in get_old_courses()] #pool.map(update_database, updated_courses) for course in updated_courses: update_database(course) for course in updated_courses: text_open_courses(course) # gets courses from redis database