def studentAPI(): username = request.form.get('username') password = request.form.get('password') user = User(username) # check if user actually exists # take the user supplied password, hash it, and compare it to the hashed password in database if check_password_hash(user.password, password): if user.isStudent(): sID = user.getId() classIDs = Backend.getStudentClasses(sID) classes = [] for cID in classIDs: classes.append( { "Name": Backend.getClassName(cID), "Time": Backend.getClassTimes(cID), "Location": Backend.getClassLocations(cID), "ClassID": cID, "Teacher": Backend.getName(Backend.getClassTeacher(cID)), "FinalGrade": Backend.getFinalGrade(cID, sID) } ) output = { "Name": Backend.getName(sID), "Classes": classes } return json.dumps(output)
def classHomepageTeacher(): cID = int(request.args.get("classID")) if Backend.checkTeacherHasClass(current_user.id, cID): assignments = [] for assignmentID in Backend.getClassAssignments(cID): assignments.append( Backend.getAssignmentInfo(assignmentID) ) students = [] grades= [] for studentID in Backend.getStudentsForClass(cID): grade = Backend.getFinalGrade(cID, studentID) students.append( { "StudentID":studentID, "StudentName": Backend.getName(studentID), "StudentGrade": grade if grade != -1 else "-" } ) if grade > -1: grades.append(grade) pageData = { "ClassID" : cID, "Name" : Backend.getClassName(cID), "Time" : Backend.getClassTimes(cID), "Location" : Backend.getClassLocations(cID), "Assignments" : assignments, "Announcements": Backend.getAnnouncementsForClass(cID), "Students": students } n = len(grades) if n > 1: pageData["Mean"] = str("%.3f" % mean(grades)) pageData["SD"] = str("%.3f" % stdev(grades)) pageData["Median"] = median(grades) else: pageData["Mean"] = "-" pageData["SD"] = "-" pageData["Median"] = "-" return render_template('classHomepageTeacher.html', pageData=pageData) else: return '', 403
def assignmentPageTeacher(): cID = request.args.get("classID") aID = request.args.get("assignmentID") if Backend.checkTeacherHasClass(current_user.id, cID) and Backend.classHasAssignment(cID, aID): pageData = Backend.getAssignmentInfo(aID) pageData["ClassID"] = cID students = [] grades = [] for student in Backend.getStudentsForClass(cID): curGrade = Backend.getGrade(aID, student) if type(curGrade) is str: curGrade = -1 if curGrade < 0: curGrade = "Not Graded" else: grades.append(curGrade) temp = { "ID": student, "Name":Backend.getName(student), "CurrentGrade": curGrade, "GradeDiscrep": Backend.getDiscrepFlag(aID, student), "CurrentComment": Backend.getTeacherComment(aID, student), "Student Comment": Backend.getStudentComment(aID, student) } students.append(temp) pageData["Students"] = students n = len(grades) if n > 1: pageData["Mean"] = str("%.3f" % mean(grades)) pageData["SD"] = str("%.3f" % stdev(grades)) pageData["Median"] = median(grades) else: pageData["Mean"] = "-" pageData["SD"] = "-" pageData["Median"] = "-" pageData["Complete"] = n pageData["Missing"] = len(students) - n return render_template("assignmentPageTeacher.html", pageData=pageData) else: return '', 403
def studentHomepage(): pageData = { } classIDs = Backend.getStudentClasses(current_user.id) classes = [] for cID in classIDs: classes.append( { "Name": Backend.getClassName(cID), "Time": Backend.getClassTimes(cID), "Location": Backend.getClassLocations(cID), "ClassID": cID, "Teacher": Backend.getName(Backend.getClassTeacher(cID)), "FinalGrade": Backend.getFinalGrade(cID, current_user.id) } ) pageData["Classes"] = classes if current_user.attempts >= 3: pageData["attempts"] = current_user.attempts db.db.Logins.update({"ID": current_user.id}, {"$set": {"attempts": 0}}) return render_template('studentHomepage.html', pageData=pageData)