Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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)
Esempio n. 6
0
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: