Exemple #1
0
def delete_year():
    #try:
    data_j = json.loads(request.data)
    token = data_j["token"]
    year = data_j["year"]
    db = get_db()
    db.execute('DELETE FROM instructors WHERE (year = ' + '"' + year + '"' +
               ' AND token = ' + '"' + token + '")')
    db.execute('DELETE FROM courses WHERE (year = ' + '"' + year + '"' +
               ' AND token = ' + '"' + token + '")')
    db.execute('DELETE FROM sections WHERE (year = ' + '"' + year + '"' +
               ' AND token = ' + '"' + token + '")')
    db_years = db.execute('SELECT years FROM users WHERE token =' + '"' +
                          token + '"')
    desc = db_years.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_years.fetchall()]
    buffer = data[0]["years"].split()
    buffer.remove(year)
    db.execute('UPDATE users'
               ' SET years =' + '"' + (" ".join(buffer)) + '"' +
               ' WHERE token =' + '"' + token + '"')
    db.commit()
    db.close()
    return jsonify({'message': 'Year Deleted'}), 200
    #except:
    return jsonify({'message': 'Error'}), 500
Exemple #2
0
def get_course():
    try:
        data_j = json.loads(request.data)
        course_id = data_j['course_id']
        year = data_j['year']
        token = data_j['token']
        db = get_db()
        if (admin.check_admin(token) == False):
            db_course = db.execute(
                'SELECT name, course_id, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l, owner, token'
                ' FROM courses'
                ' WHERE (year = ' + '"' + year + '"' + ' AND course_id = ' +
                '"' + course_id + '"'
                ' AND token = ' + '"' + token + '")')
        else:
            db_course = db.execute(
                'SELECT name, course_id, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l, owner, token'
                ' FROM courses'
                ' WHERE (year = ' + '"' + year + '"' + ' AND course_id = ' +
                '"' + course_id + '")')
        desc = db_course.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_course.fetchall()]
        if (len(data) == 0):
            return jsonify({"message": "bad"})
        return json.dumps(data[0])
    except:
        admin.create_log(request,
                         "Error caught in get_course() located in courses.py")
        return jsonify({
            'message':
            'error encountered, please contact server administrator'
        })
Exemple #3
0
def get_instructors(prev=False):
    data_j = json.loads(request.data)
    year = data_j['year']
    token = data_j['token']
    if (prev == True):
        year = str(int(data_j["year"]) - 1)
    instructors = {}
    db = get_db()

    if (admin.check_admin(token) == False):
        print("Check Admin is False")
        db_instructors = db.execute(
            'SELECT name, net_id, preps, rank, wl_credits, wl_courses, summer, year, preferred_courses, available_courses, owner, token'
            ' FROM instructors WHERE (year = ' + '"' + year + '"' +
            ' AND token = ' + '"' + token + '")')
    else:
        print("Check Admin is True")
        db_instructors = db.execute(
            'SELECT name, net_id, preps, rank, wl_credits, wl_courses, summer, year, preferred_courses, available_courses, owner, token'
            ' FROM instructors WHERE year = ' + '"' + year + '"')

    desc = db_instructors.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_instructors.fetchall()]
    return json.dumps(data)
Exemple #4
0
def edit_instructor():
    data_j = json.loads(request.data)
    if request.method == 'POST':
        name = data_j['name']
        net_id = data_j['net_id']
        year = data_j['year']
        preps = data_j['preps']
        wl_credits = data_j['wl_credits']
        wl_courses = data_j['wl_courses']
        token = data_j['token']
        available_courses = data_j['available_courses'][0]
        for course in data_j['available_courses']:
            if available_courses != course:
                available_courses = available_courses + " " + course
        print(available_courses)
        db = get_db()
        db.execute('DELETE FROM instructors WHERE (net_id = ' + '"' + net_id +
                   '"' + ' AND year = ' + '"' + year + '"' + ' AND token = ' +
                   '"' + token + '")')
        db.execute(
            'INSERT INTO instructors (name, net_id, preps, year, wl_credits, wl_courses, available_courses, token)'
            ' VALUES (?, ?, ?, ?, ?, ?, ?, ?)',
            (name, net_id, preps, year, wl_credits, wl_courses,
             available_courses, token))
        db.commit()
        db.close()
        return jsonify({'message': 'instructor edited!'}), 200
    return jsonify({'message': "I don't know what happened! Sorry."}), 200
Exemple #5
0
def get_courses(prev=False):
    try:
        data_j = json.loads(request.data)
        year = data_j['year']
        token = data_j['token']
        if (prev == True):
            year = str(int(data_j["year"]) - 1)
        db = get_db()
        if (admin.check_admin(token) == False):
            db_courses = db.execute(
                'SELECT name, course_id, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l'
                ' FROM courses WHERE year =' + '"' + year + '"' +
                'AND token=' + '"' + token + '"')
        else:
            db_courses = db.execute(
                'SELECT name, course_id, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l'
                ' FROM courses WHERE year =' + '"' + year + '"')
        desc = db_courses.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_courses.fetchall()]
        return json.dumps(data)
    except:
        create_log(request,
                   "Error caught in get_courses() located in courses.py")
        return jsonify({
            'message':
            'error encountered, please contact server administrator'
        })
Exemple #6
0
def assign_course():
    try:
        data_j = json.loads(request.data)
        sem = data_j["sem"]
        course_id = data_j["course_id"]
        instructor_id = data_j["instructor_id"]
        section_number = data_j["section_number"]
        instructor_name = data_j["instructor_name"]
        year = data_j["year"]
        course_name = data_j["course_name"]
        id = data_j["id"]
        token = data_j["token"]
        db = get_db()
        if instructor_name is None or instructor_name == "choose instructor" or instructor_id == "unassign":
            instructor_name = "Unassigned"
            instructor_id = "Unassigned"
        db.execute('UPDATE sections SET instructor_id = ' + '"' +
                   instructor_id + '"' + ', instructor_name = ' + '"' +
                   instructor_name + '"' + ', section_number = ' + '"' +
                   section_number + '"' + ' WHERE (id = ' + str(id) +
                   ' AND year = "' + year + '")')
        if instructor_name != "Unassigned":
            admin.create_log(
                request, "assigned " + instructor_name + " to " + course_name +
                ": " + section_number)
        db.commit()
        return jsonify({"message": "instructors assigned!"}), 200
    except:
        admin.create_log(
            request, "Error caught in assign_course() located in sections.py")
        return jsonify({"message": "failure"}), 200
Exemple #7
0
def pull_from_csv():
    section = 1
    db = get_db()
    df = pd.DataFrame.from_csv("instructors.csv")
    for row in df.iterrows():
        db.execute(
            'INSERT INTO instructors (name, net_id, preps, wl_credits, wl_courses, year, preferred_courses, available_courses, owner, token)'
            ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
            (row[1]['name'], row[0], row[1]['preps'], row[1]['wl_credits'],
             row[1]['wl_courses'], row[1]['year'], row[1]['preferred_courses'],
             row[1]['available_courses'], row[1]['owner'], row[1]['token']))
        db.commit()
    df = pd.DataFrame.from_csv("courses.csv")
    for row in df.iterrows():
        data_j = {}
        data_j["course_id"] = row[0]
        data_j["name"] = row[1]['name']
        data_j["owner"] = row[1]['owner']
        data_j["freq_spr"] = row[1]['freq_spr']
        data_j["freq_sum1"] = row[1]['freq_sum1']
        data_j["freq_sum2"] = row[1]['freq_sum2']
        data_j["freq_fal"] = row[1]['freq_fal']
        data_j["freq_spr_l"] = row[1]['freq_spr_l']
        data_j["freq_sum1_l"] = row[1]['freq_sum1_l']
        data_j["freq_sum2_l"] = row[1]['freq_sum2_l']
        data_j["freq_fal_l"] = row[1]['freq_fal_l']
        data_j["year"] = row[1]['year']
        data_j["owner"] = row[1]['owner']
        data_j["token"] = row[1]['token']
        create_sections(db, data_j, data_j["token"])
        db.execute(
            'INSERT INTO courses (course_id, name, owner, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l, year, owner, token)'
            ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
            (row[0], row[1]['name'], row[1]['owner'], row[1]['freq_spr'],
             row[1]['freq_sum1'], row[1]['freq_sum2'], row[1]['freq_fal'],
             row[1]['freq_spr_l'], row[1]['freq_sum1_l'],
             row[1]['freq_sum2_l'], row[1]['freq_fal_l'], row[1]['year'],
             row[1]['owner'], row[1]['token']))
        db.commit()
    db.execute(
        'INSERT INTO users (username, token, test_password, years, default_year) VALUES ("pqt3", "test", "test", "2019", "2019")'
    )
    db.execute(
        'INSERT INTO users (username, token, test_password, years, default_year) VALUES ("kcm91", "test2", "test2", "2019", "2019")'
    )
    db.execute(
        'INSERT INTO users (username, token, test_password, years, default_year) VALUES ("daj65", "test3", "test3", "2019", "2019")'
    )
    db.execute(
        'INSERT INTO users (username, token, test_password, years, default_year) VALUES ("stan", "test4", "test4", "2019", "2019")'
    )
    db.execute('INSERT INTO admins (token) VALUES ("test4")')

    db.commit()
    db.close()
    return jsonify({'message': 'bad'}), 200
Exemple #8
0
def get_course_names():
    data_j = json.loads(request.data)
    year = data_j['year']
    db = get_db()
    db_courses = db.execute('SELECT name'
                            ' FROM courses WHERE year = "' + str(year) + '"')
    desc = db_courses.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_courses.fetchall()]
    return json.dumps(data)
Exemple #9
0
def get_course_sections(course_id, year, token):
    db = get_db()
    db_sections = db.execute(
        'SELECT id, course_id, section_number, instructor_id, instructor_name, sem, year, course_name, is_lab'
        ' FROM sections'
        ' WHERE course_id = ' + '"' + course_id + '"'
        ' AND year = "' + year + '"')
    desc = db_sections.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_sections.fetchall()]
    return data
Exemple #10
0
def section_assignment_warnings(client_warnings, course, course_object,
                                data_j):
    db = get_db()
    readable_list = {
        "spr": "spring",
        "sum1": "summer I",
        "sum2": "summer II",
        "fal": "fall",
        "spr_l": "spring labs",
        "sum1_l": "summer I labs",
        "sum2_l": "summer II labs",
        "fal_l": "fall labs"
    }
    count_list = {
        "spr": 0,
        "sum1": 0,
        "sum2": 0,
        "fal": 0,
        "spr_l": 0,
        "sum1_l": 0,
        "sum2_l": 0,
        "fal_l": 0
    }
    for section in get_course_sections(course['course_id'], data_j['year'],
                                       data_j['token']):
        if (section["instructor_id"] != "Unassigned"):
            if section["is_lab"] == "True":
                string_add = "_l"
            else:
                string_add = ""
            if section["sem"] == "Spr":
                count_list["spr" + string_add] += 1
            if section["sem"] == "Sum1":
                count_list["sum1" + string_add] += 1
            if section["sem"] == "Sum2":
                count_list["sum2" + string_add] += 1
            if section["sem"] == "Fal":
                count_list["fal" + string_add] += 1
    if (course['name'] == "Ceramics"):
        print(count_list)
    for key in count_list:
        if (course['name'] == "Ceramics"):
            print("Ceramics")
            print(key)
            print(count_list[key])
            print("compared to")
            print(course["freq_" + key])
        if (count_list[key] < int(course["freq_" + key])):
            client_warnings.generate(
                course_object, course["course_id"] + " " +
                str(count_list[key]) + " /" + " " + course["freq_" + key] +
                " (" + readable_list[key] + ")" + " assigned.", 2)
Exemple #11
0
def logout():
    try:
        print("Logging Out")
        ip = request.remote_addr
        db = get_db()
        db.execute('DELETE from login_cache WHERE ip =' + '"' + ip + '"')
        db.commit()
        db.close()
        admin.create_log(request, "Successfully logged out")
        return jsonify({"username": "******", "token": " "})
    except:
        admin.create_log(request,
                         "Error caught in logout() located in login.py")
Exemple #12
0
def filter_instructors():
    data_j = json.loads(request.data)
    course_id = data_j['course_id']
    year = data_j['year']
    token = data_j['token']
    instructors_list = turn_instructors_to_objects(year, token)
    sections_list = sections.turn_sections_to_objects(year, token)
    weights = {}
    filtered_ids = []
    for i in instructors_list:
        courses_taught = []
        numCredits = float(i.wl_credits)
        for s in sections_list:
            if (s.instructor_id == i.net_id):
                if (s.section_number[0] == 'L'):
                    numCredits -= 1.5
                else:
                    numCredits -= 3
                courses_taught.append(s.course_id)
        weights[i.net_id] = numCredits
        try:
            if (course_id in i.preferred_courses):
                weights[i.net_id] = weights[i.net_id] + 5
        except:
            pass
        if (course_id in courses_taught):
            weights[i.net_id] = weights[i.net_id] + 2
        if (course_id not in i.available_courses):
            weights[i.net_id] = 0

    top_weights = sorted(weights, key=weights.get, reverse=True)[:3]
    for w in top_weights:
        for i in instructors_list:
            if (w == i.net_id):
                filtered_ids.append(w)

    db = get_db()
    db_instructors = db.execute(
        'SELECT name, net_id, preps, wl_credits, wl_courses, summer, preferred_courses, available_courses'
        ' FROM instructors WHERE year = ' + '"' + year + '"' +
        ' AND token = ' + '"' + token + '"')
    desc = db_instructors.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_instructors.fetchall()]

    filtered_instructors = []
    for ID in filtered_ids:
        for i in data:
            if i['net_id'] == ID:
                filtered_instructors.append(i)
    return json.dumps(filtered_instructors)
Exemple #13
0
def update_login_cache(ip, username, token, default_year):
    try:
        db = get_db()
        db.execute('DELETE from login_cache WHERE ip =' + '"' + ip + '"')
        db.execute(
            'INSERT INTO login_cache (ip, username, token, default_year)'
            ' VALUES (?, ?, ?, ?)', (ip, username, token, default_year))
        db.commit()
        db.close()
        return
    except:
        admin.create_log(
            request,
            "Error caught in update_login_cache() located in login.py")
Exemple #14
0
def get_sections_spr():
    data_j = json.loads(request.data)
    course_id = data_j["course_id"]
    year = data_j['year']
    db = get_db()
    db_sections = db.execute(
        'SELECT id, course_id, section_number, instructor_id, instructor_name, sem, year, course_name, token'
        ' FROM sections'
        ' WHERE course_id = ' + '"' + course_id + '"'
        ' AND sem = "Spr" AND year = "' + year + '"')
    desc = db_sections.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_sections.fetchall()]
    return json.dumps(data)
Exemple #15
0
def get_years():
    db = get_db()
    data_j = json.loads(request.data)
    token = data_j["token"]
    print(token)
    db_year = db.execute('SELECT years'
                         ' FROM users'
                         ' WHERE token = ' + '"' + token + '"')
    desc = db_year.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_year.fetchall()]
    if (len(data) == 0):
        return jsonify({"message": "no years"})
    return json.dumps(data[0])
Exemple #16
0
def turn_courses_to_objects(year):
    course_objects = {}
    db = get_db()
    db_courses = db.execute(
        'SELECT name, course_id, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l'
        ' FROM courses WHERE year =' + '"' + year + '"')
    desc = db_courses.description
    column_names = [col[0] for col in desc]
    courses = [dict(zip(column_names, row)) for row in db_courses.fetchall()]
    for c in courses:
        course_objects[c["course_id"]] = Course(
            c['course_id'], c["name"], c["owner"], c["year"], c["freq_spr"],
            c["freq_sum1"], c["freq_sum2"], c["freq_fal"], c["freq_spr_l"],
            c["freq_sum1_l"], c["freq_sum2_l"], c["freq_fal_l"])
    return course_objects.values()
Exemple #17
0
def turn_sections_to_objects(year, token):
    section_objects = {}
    db = get_db()
    db_sections = db.execute(
        'SELECT id, course_id, section_number, instructor_id, sem, year, course_name'
        ' FROM sections WHERE year = "' + year + '" AND token = "' + token +
        '"')
    desc = db_sections.description
    column_names = [col[0] for col in desc]
    sections = [dict(zip(column_names, row)) for row in db_sections.fetchall()]
    print(len(sections))
    for s in sections:
        section_objects[s["id"]] = classes.Section(
            s['id'], s['section_number'], s["course_id"], s["instructor_id"],
            s["sem"], s["year"], s["course_name"])
    return section_objects.values()
Exemple #18
0
def check_admin(token):
    try:
        db = get_db()
        db_admins = db.execute('SELECT token FROM admins WHERE token = ' +
                               '"' + token + '"')
        desc = db_admins.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_admins.fetchall()]
        if len(data) != 0:
            return True
            print("This is an admin")
        else:
            return False
    except:
        create_log(request,
                   "Error caught in check_admin() located in admin.py")
Exemple #19
0
def check_login_cache():
    try:
        db = get_db()
        ip = request.remote_addr
        db_user = db.execute('SELECT username, token, default_year'
                             ' FROM login_cache WHERE ip=' + '"' + ip + '"')
        desc = db_user.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_user.fetchall()]
        db.close()
        if (len(data) == 0):
            return jsonify({"username": "******", "test_password": "******"})
        return json.dumps(data[0])
    except:
        admin.create_log(
            request, "Error caught in check_login_cache() located in login.py")
Exemple #20
0
def delete_instructor():
    data_j = json.loads(request.data)
    net_id = data_j['net_id']
    token = data_j['token']
    year = data_j['year']
    db = get_db()
    db.execute(
        'UPDATE sections'
        ' SET instructor_id = "Unassigned", instructor_name = "Unassigned"'
        ' WHERE (year = ' + '"' + year + '"' + ' AND instructor_id = ' + '"' +
        net_id + '"' + ' AND token = ' + '"' + token + '")')
    db.execute('DELETE FROM instructors WHERE (net_id = ' + '"' + net_id +
               '"' + ' AND year = ' + '"' + year + '"' + ' AND token = ' +
               '"' + token + '")')
    db.commit()
    db.close()
    return jsonify({'message': 'instructor deleted!'}), 200
Exemple #21
0
def course_mismatch_warnings(client_warnings, instructor, instructor_object,
                             data_j):
    db = get_db()
    if instructor['available_courses'] is None:
        instructor['available_courses'] = "Nothing"
    for section in get_instructor_sections(instructor['net_id'],
                                           data_j['year'], data_j['token']):
        if section['course_id'] not in instructor['available_courses'].split():
            if section['sem'] == "Fal":
                client_warnings.generate(
                    instructor_object, instructor['name'] +
                    " - assigned unavailable course (fall): " +
                    section['course_name'], 3)
            elif section['sem'] == "Spr":
                client_warnings.generate(
                    instructor_object, instructor['name'] +
                    " - assigned unavailable course (spring): " +
                    section['course_name'], 3)
Exemple #22
0
def create_user():
    try:
        data_j = json.loads(request.data)
        username = data_j["username"]
        test_password = data_j["test_password"]
        random.seed()
        token = str(random.random()) + username
        db = get_db()
        db.execute(
            'INSERT INTO users (username, test_password)'
            ' VALUES (?, ?)', (username, test_password))
        db.commit()
        db.close()
        return jsonify({'message': 'user added!'}), 200
        create_log(request, username + " added to users")
    except:
        create_log(request,
                   "Error caught in create_user() located in admin.py")
Exemple #23
0
def get_all_sections():
    data_j = json.loads(request.data)
    year = data_j['year']
    token = data_j['token']
    db = get_db()
    if (admin.check_admin(token) == False):
        db_sections = db.execute(
            'SELECT id, course_id, section_number, instructor_id, instructor_name, sem, year, course_name, is_lab, token'
            ' FROM sections WHERE year = "' + year + '"' + ' AND token=' +
            '"' + token + '"')
    else:
        db_sections = db.execute(
            'SELECT id, course_id, section_number, instructor_id, instructor_name, sem, year, course_name, is_lab, token'
            ' FROM sections WHERE year = "' + year + '"')
    desc = db_sections.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_sections.fetchall()]
    return json.dumps(data)
Exemple #24
0
def turn_instructors_to_objects(year, token):
    instructor_objects = {}
    db = get_db()
    db_instructors = db.execute(
        'SELECT name, net_id, rank, year, preps, wl_credits, wl_courses, summer, preferred_courses, available_courses'
        ' FROM instructors WHERE year = "' + year + '" AND token = "' + token +
        '"')
    desc = db_instructors.description
    column_names = [col[0] for col in desc]
    instructorsList = [
        dict(zip(column_names, row)) for row in db_instructors.fetchall()
    ]
    for i in instructorsList:
        instructor_objects[i["net_id"]] = classes.Instructor(
            i["net_id"], i["name"], i["year"], i["rank"], i["preps"],
            i["wl_credits"], i["wl_courses"], i["summer"],
            i["preferred_courses"], i["available_courses"])
    return instructor_objects.values()
Exemple #25
0
def add_course():
    try:
        data_j = json.loads(request.data)
        course_id = data_j['course_id']
        name = data_j['name']
        owner = data_j['owner']
        year = data_j['year']
        freq_spr = data_j['freq_spr']
        freq_sum1 = data_j['freq_sum1']
        freq_sum2 = data_j['freq_sum2']
        freq_fal = data_j['freq_fal']
        freq_spr_l = data_j['freq_spr_l']
        freq_sum1_l = data_j['freq_sum1_l']
        freq_sum2_l = data_j['freq_sum2_l']
        freq_fal_l = data_j['freq_fal_l']
        token = data_j['token']
        db = get_db()
        db_courses = db.execute('SELECT course_id' ' FROM courses')
        desc = db_courses.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_courses.fetchall()]
        for i in data:
            if (course_id == i['course_id']):
                db.close()
                return jsonify(
                    {'message': 'duplicate course, course not added'}), 200
        db.execute(
            'INSERT INTO courses (course_id, name, owner, year, freq_spr, freq_sum1, freq_sum2, freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l, owner, token)'
            ' VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
            (course_id, name, owner, year, freq_spr, freq_sum1, freq_sum2,
             freq_fal, freq_spr_l, freq_sum1_l, freq_sum2_l, freq_fal_l, owner,
             token))
        db.commit()
        sections.create_sections(db, data_j, token)
        db.close()
        admin.create_log(request, course_id + " added to courses")
        return jsonify({'message': 'course added'}), 200
    except:
        admin.create_log(request,
                         "Error caught in add_course() located in courses.py")
        return jsonify({
            'message':
            'error encountered, please contact server administrator'
        })
Exemple #26
0
def login():
    try:
        db = get_db()
        data_j = json.loads(request.data)
        username = data_j["username"]
        test_password = data_j["test_password"]

        #Scan user login table for matching credentials

        db_user = db.execute('SELECT username, token, default_year'
                             ' FROM users WHERE (username = '******'"' +
                             username + '"' + ' AND test_password = '******'"' +
                             test_password + '")')
        desc = db_user.description
        column_names = [col[0] for col in desc]
        data = [dict(zip(column_names, row)) for row in db_user.fetchall()]
        if (len(data) == 0):

            # If no username/password match, return empty login

            return jsonify({"username": "******", "test_password": "******"})
            create_log(
                request,
                "Invalid user login attempted (No matching credentials)")
        else:
            ip = request.remote_addr

            # Update user into login cache

            update_login_cache(ip, data[0]["username"], data[0]["token"],
                               data[0]["default_year"])
            admin.create_log(
                request,
                "User successfully logged in as " + data[0]["username"])
        db.close()
        return json.dumps(data[0])
    except:
        admin.create_log(request,
                         "Error caught in login() located in login.py")
        return jsonify({
            "message":
            "Error logging in, please contact server administrators"
        })
Exemple #27
0
def create_warnings():
    client_warnings = classes.Warnings()
    client_warnings.clear()
    db = get_db()
    data_j = json.loads(request.data)
    print('hi')
    for instructor in json.loads(instructors.get_instructors()):
        instructor_object = namedtuple("Instructor",
                                       instructor.keys())(*instructor.values())
        course_mismatch_warnings(client_warnings, instructor,
                                 instructor_object, data_j)
        sections_limit_warnings(client_warnings, instructor, instructor_object,
                                data_j)
        preps_limit_warnings(client_warnings, instructor, instructor_object,
                             data_j)
    for course in json.loads(courses.get_courses()):
        course_object = namedtuple("Course", course.keys())(*course.values())
        section_assignment_warnings(client_warnings, course, course_object,
                                    data_j)
    return client_warnings
Exemple #28
0
def delete_course():
    try:
        data_j = json.loads(request.data)
        token = data_j['token']
        course_id = data_j['course_id']
        db = get_db()
        db.execute('DELETE FROM courses WHERE (course_id = ' + '"' +
                   course_id + '"' + ' AND token = ' + '"' + token + '")')
        db.execute('DELETE FROM sections WHERE (course_id = ' + '"' +
                   course_id + '"' + ' AND token = ' + '"' + token + '")')
        db.commit()
        db.close()
        admin.create_log(request, course_id + " deleted from courses")
        return jsonify({'message': 'course deleted'}), 200
    except:
        admin.create_log(
            request, "Error caught in delete_course() located in courses.py")
        return jsonify({
            'message':
            'error encountered, please contact server administrator'
        })
Exemple #29
0
def get_instructor():
    data_j = json.loads(request.data)
    net_id = data_j['net_id']
    year = data_j['year']
    token = data_j['token']
    db = get_db()
    if (admin.check_admin(token) == False):
        db_instructor = db.execute(
            'SELECT name, net_id, preps, rank, wl_credits, wl_courses, summer, preferred_courses, available_courses, year, owner, token'
            ' FROM instructors WHERE (net_id = ' + '"' + net_id + '"' +
            ' AND year = ' + '"' + year + '"' + ' AND token = ' + '"' + token +
            '")')
    else:
        db_instructor = db.execute(
            'SELECT name, net_id, preps, rank, wl_credits, wl_courses, summer, preferred_courses, available_courses, year, owner, token'
            ' FROM instructors WHERE (net_id = ' + '"' + net_id + '"' +
            ' AND year = ' + '"' + year + '")')
    desc = db_instructor.description
    column_names = [col[0] for col in desc]
    data = [dict(zip(column_names, row)) for row in db_instructor.fetchall()]
    return json.dumps(data[0])
Exemple #30
0
def preps_limit_warnings(client_warnings, instructor, instructor_object,
                         data_j):
    db = get_db()
    course_list_spr = []
    course_list_fal = []
    for section in get_instructor_sections(instructor['net_id'],
                                           data_j['year'], data_j['token']):
        if section["sem"] == "Spr":
            course_list_spr.append(section['course_name'])
        if section["sem"] == "Fal":
            course_list_fal.append(section['course_name'])
    course_list_spr = list(set(course_list_spr))
    course_list_fal = list(set(course_list_fal))
    if (len(course_list_spr) > int(instructor['preps'])):
        client_warnings.generate(
            instructor_object, instructor["name"] +
            " - assigned too many unique classes (spring)", 1)
    if (len(course_list_fal) > int(instructor['preps'])):
        client_warnings.generate(
            instructor_object,
            instructor["name"] + " - assigned too many unique classes (fall)",
            1)