def assignment_submit(assignments_id):
    """
    Student submit assignment
    :param assignments_id:
    :return:
    """
    assignment = Assignment.get_by_id(assignments_id)
    submit = Submition.get_submit(
        user_session(session['user'], session['type']).id, assignments_id)
    if request.method == "POST":
        content = request.form['content']
        if assignment.type == 'group':
            team_id = user_session(session['user'], session['type']).team_id
            team = Team.get_by_id(team_id)
            team_members = team.get_members()
            for student in team_members:
                submit = Submition.get_submit(student.id, assignments_id)
                submit.change_content(content)
        else:
            submit.change_content(content)
        return redirect(
            url_for('assignment_controller.view_assignments',
                    assignments_id=assignments_id))

    return render_template('stud-submit.html',
                           user=user_session(session['user'], session['type']),
                           assignment=assignment,
                           submit=submit)
예제 #2
0
def list_checkpoints():
    """
    List all checkpoints
    :return: template
    """

    user = user_session(session['user'], session['type'])
    choose = None
    if isinstance(user, Mentor):
        choose = "Mentor"
        list_checkpoints = Checkpoint.get_list_distinct()
        return render_template('viewcheckpoints.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               choose=choose,
                               list_checkpoints=list_checkpoints)
    elif isinstance(user, Student):
        choose = "Student"
        list_checkpoints = Checkpoint.get_by_student_id(user.id)
        return render_template('viewcheckpoints.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               choose=choose,
                               list_checkpoints=list_checkpoints)
    else:
        return render_template('404.html',
                               user=user_session(session['user'],
                                                 session['type']))
def list_assignments():
    """
    List assignments

    GET: returns 404 or Student view or Mentor view
    POST: returns HTTP 200 on success and redirect to list-assignments page
    """

    user = user_session(session['user'], session['type'])
    if isinstance(user, Mentor):
        choose = "Mentor"
        assignListOfObjects = Assignment.get_list()
        return render_template('viewassignments.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               choose=choose,
                               assignListOfObjects=assignListOfObjects)

    elif (isinstance(user, Student)):

        choose = "Student"
        student_id = user_session(session['user'], session['type']).id
        student_assignments = Assignment.get_all_assigmnets(student_id)

        return render_template('viewassignments.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               choose=choose,
                               student_assignments=student_assignments)
    else:
        return render_template('404.html',
                               user=user_session(session['user'],
                                                 session['type']))
def grade_assignment():
    """
    List user of assignments and add possibility to grade it
    :return:
    """
    if request.method == 'POST':
        if request.form['assignmentID']:
            assigID = Assignment.get_by_id(request.form['assignmentID'])
            studentsDetails = Assignment.get_students_of_assigmnent(assigID.id)

            return render_template('grade_assignment.html',
                                   user=user_session(session['user'],
                                                     session['type']),
                                   students=studentsDetails,
                                   assignment=assigID)
    elif request.method == "GET":
        assigID = Assignment.get_by_id(request.args['assignmentID'])
        studentsDetails = Assignment.get_students_of_assigmnent(assigID.id)
        return render_template('grade_assignment.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               students=studentsDetails,
                               assignment=assigID)
    else:
        return render_template('404.html',
                               user=user_session(session['user'],
                                                 session['type']))
예제 #5
0
def add_checkpoint():
    """
    GET: returns add assistant formula
    POST: returns list of assistant with new assistant added
    """
    user = user_session(session['user'], session['type'])
    if isinstance(user, Mentor):
        if request.method == 'POST':
            if request.form['add_checkpoint']:
                students = Student.list_students()
                checkpoint_name = request.form['checkpoint_name']
                date = request.form['date']
                Checkpoint.add_checkpoint_students(
                    checkpoint_name, date,
                    user_session(session['user'], session['type']).id,
                    students)
                flash('Checkpoint was added')
                return redirect(
                    url_for('checkpoint_controller.list_checkpoints'))

        return render_template('add_checkpoint.html',
                               user=user_session(session['user'],
                                                 session['type']))

    return render_template('404.html',
                           user=user_session(session['user'], session['type']))
def view_assignments(assignments_id):
    """
    List all assignments of user
    :param assignments_id:
    :return:
    """
    assignment = Assignment.get_by_id(assignments_id)
    submit = Submition.get_submit(
        user_session(session['user'], session['type']).id, assignments_id)
    return render_template('stud_view_assiment.html',
                           user=user_session(session['user'], session['type']),
                           assignment=assignment,
                           submit=submit)
예제 #7
0
def delete_checkpoint():
    user = user_session(session['user'], session['type'])
    if isinstance(user, Mentor):
        if request.method == 'POST':
            if request.form['action']:
                checkpoint_name = request.form['checkpoint_name']
                Checkpoint.remove_checkpoint(checkpoint_name)
                flash('Checkpoint was deleted')
                return redirect(
                    url_for('checkpoint_controller.list_checkpoints'))

    return render_template('404.html',
                           user=user_session(session['user'], session['type']))
def list_students():
    """
    GET to generate a list of students
    """
    students = Student.list_students()
    return render_template('viewstudents.html',
                           user=user_session(session['user'], session['type']),
                           students=students)
예제 #9
0
def grade_checkpoint(checkpoint_name):
    user = user_session(session['user'], session['type'])

    if isinstance(user, Mentor):
        if request.method == 'POST':
            id_list = request.form.getlist('id[]')
            grade_list = request.form.getlist('checkpoint-grade[]')
            Checkpoint.grade_checkpoints(grade_list, id_list)
            return redirect(url_for('checkpoint_controller.list_checkpoints'))

        chkp_list = Checkpoint.get_details_checkpoint_by_name(checkpoint_name)
        return render_template('grade_checkpoint.html',
                               checkpoint_name=checkpoint_name,
                               chkp_list=chkp_list,
                               user=user_session(session['user'],
                                                 session['type']))

    return render_template('404.html',
                           user=user_session(session['user'], session['type']))
def statistics():
    """Return statistics.html with Student objects."""
    students = Student.list_students()
    if session['type'] == 'Student':
        students = [
            student for student in students
            if student.id == int(session['user'])
        ]
    return render_template('statistics.html',
                           user=user_session(session['user'], session['type']),
                           students=students)
예제 #11
0
def add_team():
    """
    Return team_form.html
    POST: Add team to database basing on data from request.form['name'] and redirect user to list-teams definition.
    """
    if request.method == 'POST':
        Team(request.form['name']).add_team()
        flash('Team was added')
        return redirect('list-teams')
    return render_template("team_form.html",
                           user=user_session(session['user'], session['type']))
예제 #12
0
def list_mentors():
    """
    GET to generate a list of mentors
    """
    mentors_list = Mentor.list_mentors()
    add = 'employee_controller.add_mentor'
    edit = 'employee_controller.edit_mentor'
    delete = 'employee_controller.delete_mentor'
    return render_template('viewemployee.html', user=user_session(session['user'], session['type']),
                           employee_list=mentors_list, employee='Mentor',
                           add=add, edit=edit, delete=delete)
예제 #13
0
def add_assistant():
    """
    GET: returns add assistant formula
    POST: returns list of assistant with new assistant added
    """
    if request.method == 'POST':
        save_employee('assistant', 'add')
        flash('Assistant was added')
        return redirect(url_for('employee_controller.list_assistants'))
    return render_template('addemployee.html', user=user_session(session['user'], session['type']),
                           employee='Assistant', list='employee_controller.list_assistants')
예제 #14
0
def list_assistants():
    """
    GET to generate a list of assistants
    """
    assistants_list = Employee.list_employee('assistant')
    add = 'employee_controller.add_assistant'
    edit = 'employee_controller.edit_assistant'
    delete = 'employee_controller.delete_assistant'
    return render_template('viewemployee.html', user=user_session(session['user'], session['type']),
                           employee_list=assistants_list, employee='Assistant',
                           add=add, edit=edit, delete=delete)
def add_assignment():
    """
    Add assignment
    :return:
    """
    if request.method == 'POST':
        if request.form['add_assignment']:
            title = request.form['title']
            description = request.form['description']
            due_to = request.form['due_to']
            type = request.form['type']
            Assignment.create(
                title, description, type,
                user_session(session['user'], session['type']).username,
                due_to,
                user_session(session['user'], session['type']).id)
            flash('Assignment was added')
            return redirect(url_for('assignment_controller.list_assignments'))

    return render_template('addassignment.html',
                           user=user_session(session['user'], session['type']))
def grade_user_assignments(username):
    """
    Grade assignment of user if you are mentor
    :param username:
    :return:
    """
    if request.method == "POST":

        if request.form['grade_user'] == 'grade':
            assignment_id = request.form['assignment']
            student_id = request.form['id']
            assignment = Assignment.get_by_id(assignment_id)
            student = Student.get_by_id(student_id)
            student_submit = Submition.get_submit(student_id, assignment_id)
            return render_template('grade_user_assignments.html',
                                   user=user_session(session['user'],
                                                     session['type']),
                                   student=student,
                                   assignment=assignment,
                                   student_submit=student_submit)
        elif request.form['grade_user'] == 'Save':
            submit_id = request.form['submit_id']
            new_grade = request.form['new_grade']
            assignment_id = request.form['assignment_id']
            assignment = Assignment.get_by_id(assignment_id)
            submit = Submition.get_by_id(submit_id)
            if assignment.type == 'group':
                team_id = Student.get_by_id(submit.student_id).team_id
                team = Team.get_by_id(team_id)
                team_members = team.get_members()
                for student in team_members:
                    submit = Submition.get_submit(student.id, assignment_id)
                    submit.update_grade(new_grade)
            else:
                submit.update_grade(new_grade)
            return redirect(
                url_for('assignment_controller.grade_assignment',
                        assignmentID=assignment_id))
    return render_template('404.html',
                           user=user_session(session['user'], session['type']))
예제 #17
0
def add_mentor():
    """
    GET: returns add mentor formula
    POST: returns list of mentors with new mentor added

    """

    if request.method == 'POST':
        save_employee('mentor', 'add')
        flash('Mentor was added')
        return redirect(url_for('employee_controller.list_mentors'))
    return render_template('addemployee.html', user=user_session(session['user'], session['type']),
                           list='employee_controller.list_mentors')
def add_student():
    """
    GET: returns add student formula
    POST: returns list of students with new student added
    """
    teams = Team.list_teams()
    if request.method == 'POST':
        save_student('add')
        flash('Student was added')
        return redirect(url_for('student_controller.list_students'))
    return render_template('student_form.html',
                           user=user_session(session['user'], session['type']),
                           teams=teams)
예제 #19
0
def edit_mentor(employee_id):
    """
    Edit mentor formula to edit mentor details
    :param employee_id: int
    GET return edit mentor formula
    POST return list of mentors with edited mentor changes saved
    """
    mentor = Mentor.get_by_id(employee_id)
    if request.method == 'POST':
        save_employee('mentor', 'edit', mentor)
        flash('Mentor was edited')
        return redirect(url_for('employee_controller.list_mentors'))
    return render_template('editemployee.html', user=user_session(session['user'], session['type']), employee=mentor,
                           list='employee_controller.list_mentors')
예제 #20
0
def edit_assistant(employee_id):
    """
    Edit assistant formula to edit assistant details
    :param employee_id: int
    GET return edit assistants formula
    POST return list of assistants with edited assistant changes saved
    """
    assistant = Employee.get_by_id(employee_id, 'assistant')
    if request.method == 'POST':
        save_employee('assistant', 'edit', assistant)
        flash('Assistant was edited')
        return redirect(url_for('employee_controller.list_assistants'))
    return render_template('editemployee.html', user=user_session(session['user'], session['type']), employee=assistant,
                           list='employee_controller.list_assistants')
예제 #21
0
def edit_team(team_id):
    """
    Return team_form.html with team basing on given team_id
    POST: Edit team with given values in request.form['name'] and redirect user to list-teams definition.
    :param team_id: team id in database
    """
    team = Team.get_by_id(team_id)
    if request.method == 'POST':
        team.name = request.form['name']
        team.edit_team()
        flash('Team was edited')
        return redirect(url_for('team_controller.list_teams'))
    return render_template('team_form.html',
                           user=user_session(session['user'], session['type']),
                           team=team)
def edit_student(student_id):
    """
    Edit student formula to edit student details
    :param student_id: int
    GET return edit student formula
    POST return list of students with edited student changes saved
    """
    teams = Team.list_teams()
    student = Student.get_by_id(student_id)
    print('Editing')
    if student:
        if request.method == 'POST':
            save_student('edit', student.id)
            flash('Student was edited')
            return redirect(url_for('student_controller.list_students'))
        return render_template('edit_student_form.html',
                               user=user_session(session['user'],
                                                 session['type']),
                               student=student,
                               teams=teams)
    return redirect('list-students')
def attendance():
    """
    GET: Return attendance.html with Students object.
    POST: Add or update attendance in database by given value in request.form. Redirect to attendance definition.
    """
    students = Student.list_students()
    date = datetime.datetime.today().date()
    students_checked = Attendance.get_attendance_day(date)
    if request.method == 'POST':
        if Attendance.already_checked(date):
            for student in students_checked:
                status = bool(int(request.form[str(student[0])]))
                Attendance.update_attendance_day(int(student[0]), date, status)
            flash('Attendence was updated')
        else:
            for student in students:
                status = bool(request.form[str(student.id)])
                Attendance(date, status, student.id).add()
                flash('Attendence was checked')
        return redirect(url_for('attendance_controller.attendance'))
    return render_template('attendance.html', user=user_session(session['user'], session['type']), students=students,
                           date=date, students_checked=students_checked)
예제 #24
0
def list_teams():
    """Return viewteams.html with list of id teams and teams names."""
    teams = Team.list_teams()
    return render_template('viewteams.html',
                           user=user_session(session['user'], session['type']),
                           teams=teams)
예제 #25
0
def index():
    """
    handle main index page, display nav of current user
    :return:
    """
    return render_template('index.html', user=user_session(session['user'], session['type']))