def Write_Courses(): Options = GetOptions() subjects = Options[3].values() term = "201610" ATTR = '0ANY' Division = "UG" Campus = "M" Credit = "A" Courses = GetClasses(term, subjects, Credit, ATTR, Division, Campus) return Courses
def DisplayClasses(term, subject, credit, attr, divs, campus): global Professors global ProfDepartments ClassList = GetClasses(term, subject, credit, attr, divs, campus) didAddProf = False didAddDept = False # Checks to see if every instructor is is Professors dictionary. If they # are not, we add their names to the text file, and recalculate the Professors dictionary ProfsAdded = [] for course in ClassList: try: profs = course['Instructor'] Department = ''.join([char for char in course['Course - Sec'].split(' ')[0] if char.isalpha()]) P = [course['Teacher_Info'][i].split('P=')[-1] for i in range(len(course['Teacher_Info']))] for i in range(len(profs)): if profs[i] not in Professors: f = open('./TeacherList.txt', 'a') f.write('<OPTION VALUE="' + str(P[i]) + '">' + str(profs[i]) + '\n') f.close() didAddProf = True if P[i] not in ProfDepartments and (P[i], Department) not in ProfsAdded: f = open('./ProfessorDepartments.txt', 'a') #f.write(str(profs[i]) + '; Departments:'+ Department + '\n') f.write(str(P[i]) + '; Departments:' + Department + '\n') f.close() didAddDept = True ProfsAdded.append((P[i], Department)) if Department not in ProfDepartments[P[i]] and (P[i], Department) not in ProfsAdded: f = open('./ProfessorDepartments.txt', 'a') #f.write(str(profs[i]) + '; Departments:'+ Department + '\n') f.write(str(P[i]) + '; Departments:' + Department + '\n') f.close() didAddDept = True ProfsAdded.append((P[i], Department)) except KeyError: pass if didAddProf: Professors = GetAllProfessors() didAddProf = False if didAddDept: ProfDepartments = GetAllProfessorDepartments() didAddDept = False # Keys specifies what exactly we want to show up on our class search Keys = ['Title', 'Course - Sec','Instructor', 'View_Books', 'Cr', 'Max', 'Opn', 'CRN', 'Teacher_Info', 'When', 'Begin', 'End', 'Where'] return render_template('DisplayClassData.html', TermOptionKeys=Sort_dict(Options[0], True), TermOptions=Options[0], DivisionOptionKeys=Sort_dict(Options[1], False), DivisionOptions=Options[1], CampusOptionKeys=Sort_dict(Options[2], False), CampusOptions=Options[2], SubjectOptionKeys=Sort_dict(Options[3], False), SubjectOptions=Options[3], AttributeOptionKeys=Sort_dict(Options[4], False), AttributeOptions=Options[4], CreditsOptionKeys=Sort_dict(Options[5], False), CreditsOptions=Options[5], ClassList=ClassList, Keys=Keys)
def Write_Courses_iter(): Options = GetOptions() subjects = Options[3].values() term = "201610" ATTR = '0ANY' Division = "UG" Campus = "M" Credit = "A" for subject in subjects: Courses = GetClasses(term, subject, Credit, ATTR, Division, Campus) yield Courses
def createAndPopulate(): #connect to database file conn = sqlite3.connect(sqlite_file) c = conn.cursor() #create table c.execute( "CREATE TABLE class_data(a TEXT b TEXT c TEXT d TEXT e TEXT f TEXT g TEXT h TEXT i TEXT j TEXT k TEXT l TEXT m TEXT n TEXT o TEXT p TEXT q TEXT)" ) #columns will be from list of courseInfo. parameters are arbitrary and only used to make function run properly courseInfo = GetClasses('201510', 'ACCT', 'A', '0ANY', 'A', 'M')[0].keys() for i in range(0, (len(courseInfo) - 1)): c.execute("ALTER TABLE {tn} ADD COLUMN '{cn}' {ct}"\ .format(tn=table, cn=courseInfo[i], ct=cType)) #populate table with all available classes termOptions = GetOptions()[0].values() print termOptions divOptions = GetOptions()[1].values() campusOptions = GetOptions()[2].values() subjectOptions = GetOptions()[3].values() attrOptions = GetOptions()[4].values() creditOptions = GetOptions()[5].values() #GetClasses(term, subj, credit, Attr, divs, campus): classList = GetClasses(termOptions, subjectOptions, creditOptions, attrOptions, divOptions, campusOptions) #databaseInfo = classList.values() print len(classList) i = 0 print classList[i].values() x = classList[i].values() print x[0] print classList for i in range(0, len(classList) / 17): j = 1 x = classList[i].values() print x c.executemany( "INSERT INTO class_data VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", (x, )) j += 1
def BestClassesFor(page=1): # Dummy list until we can access classes from database if page == 1: Attributes = {'2nd Theology':'THE2', '2nd Philosophy':'PHI2', 'Social Science': 'SOSC', 'Natural Science (req)': 'NASC'} elif page == 2: Attributes = {'Fine Arts':'FNAR', 'Literature':'LIT', 'History': 'HIST'} ClassList = [] if page == 1: SubjectsSorted = ['2nd Theology', '2nd Philosophy', 'Social Science', 'Natural Science (req)'] elif page == 2: SubjectsSorted = ['Fine Arts', 'Literature', 'History'] Indexs = range(len(SubjectsSorted)) for attr in SubjectsSorted: courses = GetClasses('201510', Options[3].values(), 'A', Attributes[attr], 'A', 'M') course_container = [] for i in courses: course_container.append([i['Title'], i['CRN'], i['Term']]) ClassList.append(course_container) return render_template('BestClassesFor.html', Subjects=Attributes, SubjectsSorted=SubjectsSorted, Courses=ClassList, Indexs=Indexs)
from class_search_web_scrapping import GetClasses, GetCurrentSemester from twilio.rest.exceptions import TwilioRestException from twilio.rest import TwilioRestClient import os crn = '24680' openSpots = 0 courseName = 'Unamed Course' classes = GetClasses(GetCurrentSemester(), "CSE", "A", "0ANY", "A", "M") for course in classes: if course['CRN'] == crn: openSpots = course['Opn'] courseName = course['Title'] if int(openSpots) > 0: body = "A spot has recently opened up in a class you are watching on ndreviews.com\n\ The course %s now has %s open spots\n\ \n\ Good luck NOVOing as quick as you can!\n\ -ndreviews staff" % (courseName, openSpots) ACCOUNT_SID = os.environ.get('TWILIO_ACCOUNT_SID', '') AUTH_TOKEN = os.environ.get('TWILIO_AUTH_TOKEN', '') TWILIO_NUMBER = os.environ.get('TWILIO_NUMBER', '') try: client = TwilioRestClient(ACCOUNT_SID, AUTH_TOKEN) message = client.messages.create(to="+16124378532", from_=TWILIO_NUMBER, body=body) except TwilioRestException: