コード例 #1
0
def download():
    validate_role(current_user, User.Roles['TEACHER'])
    request_id = request.args.get('id')
    domain = request.args.get('domain')
    my_object, my_course, filename = None, None, None
    if domain == 'test':
        my_object = Test.query.filter_by(id=request_id).first()
        filename = request.args.get('filename')
        my_course = my_object.get_course()
    elif domain == 'solution':
        my_object = Solution.query.filter_by(id=request_id).first()
        my_type = request.args.get('type')
        if my_type == 'output':
            filename = my_object.output_file
        else:
            filename = my_object.filename
        my_course = my_object.get_course()
    elif domain == 'export':
        my_object = Export.query.filter_by(id=request_id).first()
        filename = my_object.file_name
    elif domain == 'lesson':
        my_object = Lesson.query.filter_by(id=request_id).first()
        filename = my_object.content_pdf_path
        my_course = my_object.get_course()
    else:
        abort(404)
    if domain == 'export':
        if my_object.user_id != current_user.id:
            abort(404)
    else:
        validate_course(current_user, User.Roles['TEACHER'], my_course)
    return send_from_directory(directory=my_object.get_directory(),
                               filename=filename)
コード例 #2
0
ファイル: student_routes.py プロジェクト: michaljk1/Pointer
def view_statistics():
    validate_role(current_user, User.Roles['STUDENT'])
    statistics_list = []
    for course in current_user.courses:
        statistics_list.append(Statistics(course=course, student=current_user))
    return render_template('student/statistics.html',
                           statisticsList=statistics_list)
コード例 #3
0
ファイル: admin_routes.py プロジェクト: michaljk1/Pointer
def view_logins():
    validate_role(current_user, User.Roles['ADMIN'])
    form = LoginInfoForm()
    for user in User.query.all():
        form.email.choices.append((user.email, user.email))
    if form.validate_on_submit():
        logins = login_query(form, current_user.role).all()
        return render_template('teacheradmin/logins.html', form=form, logins=logins)
    return render_template('teacheradmin/logins.html', form=form, logins=[])
コード例 #4
0
def view_logins():
    validate_role(current_user, User.Roles['TEACHER'])
    form, logins = LoginInfoForm(), []
    emails = get_students_emails_from_courses(current_user.courses)
    emails.append(current_user.email)
    form.email.choices += ((email, email) for email in emails)
    if form.validate_on_submit():
        logins = login_query(form, current_user.role, emails).all()
    return render_template('teacheradmin/logins.html',
                           form=form,
                           logins=logins)
コード例 #5
0
ファイル: admin_routes.py プロジェクト: michaljk1/Pointer
def student_roles():
    validate_role(current_user, User.Roles['ADMIN'])
    student_form = RoleStudentForm()
    for teacher in Teacher.query.all():
        student_form.email.choices.append((teacher.email, teacher.email))
    if request.method == 'POST' and student_form.validate_on_submit():
        user = Member.query.filter_by(email=student_form.email.data).first()
        user.role = User.Roles['STUDENT']
        db.session.commit()
        flash('Nadano prawa studenta', 'message')
        return redirect(url_for('admin.student_roles'))
    return render_template('admin/student_roles.html', student_form=student_form)
コード例 #6
0
ファイル: admin_routes.py プロジェクト: michaljk1/Pointer
def teacher_roles():
    validate_role(current_user, User.Roles['ADMIN'])
    teacher_form = RoleTeacherForm()
    for student in Student.query.all():
        teacher_form.email.choices.append((student.email, student.email))
    if request.method == 'POST' and teacher_form.validate_on_submit():
        user = Member.query.filter_by(email=teacher_form.email.data).first()
        user.role = User.Roles['TEACHER']
        create_directory(user.get_directory())
        db.session.commit()
        flash('Nadano prawa nauczyciela', 'message')
        return redirect(url_for('admin.teacher_roles'))
    return render_template('admin/teacher_roles.html', teacher_form=teacher_form)
コード例 #7
0
ファイル: student_routes.py プロジェクト: michaljk1/Pointer
def append_course(link):
    course_by_link = Course.query.filter_by(link=link).first()
    validate_role(current_user, User.Roles['STUDENT'])
    validate_exists(course_by_link)
    if not course_by_link.is_open:
        flash('Przypisanie do kursu nie jest obecnie możliwe')
        return redirect(url_for('student.index'))
    elif course_by_link not in current_user.courses:
        current_user.courses.append(course_by_link)
        db.session.commit()
        flash('Przypisano do kursu')
    else:
        flash('Użytkownik przypisany do kursu')
    return redirect(url_for('student.index'))
コード例 #8
0
ファイル: course_route.py プロジェクト: michaljk1/Pointer
def add_course():
    validate_role(current_user, User.Roles['TEACHER'])
    form = CourseForm()
    if request.method == 'POST' and form.validate_on_submit():
        new_course = Course(name=form.name.data,
                            is_open=True,
                            link=''.join(
                                random.choice(string.ascii_lowercase)
                                for i in range(25)))
        current_user.courses.append(new_course)
        create_directory(new_course.get_directory())
        db.session.commit()
        flash('Dodano kurs', 'message')
        return redirect(url_for('teacher.view_courses'))
    return render_template('teacher/add_course.html', form=form)
コード例 #9
0
ファイル: student_routes.py プロジェクト: michaljk1/Pointer
def view_solutions():
    validate_role(current_user, User.Roles['STUDENT'])
    form, solutions = SolutionStudentSearchForm(), []
    for course in current_user.courses:
        form.course.choices.append((course.name, course.name))
    if request.method == 'POST' and form.validate_on_submit():
        all_solutions = exercise_student_query(
            form=form,
            courses=current_user.get_course_names(),
            student_id=current_user.id).all()
        solutions = sorted(get_filtered_by_status(all_solutions,
                                                  form.status.data),
                           key=lambda sol: sol.send_date,
                           reverse=True)
    return render_template('student/solutions.html',
                           form=form,
                           solutions=solutions)
コード例 #10
0
def view_statistics():
    validate_role(current_user, User.Roles['TEACHER'])
    form = StatisticsForm()
    for course in current_user.courses:
        form.course.choices.append((course.name, course.name))
    form.email.choices += (
        (email, email)
        for email in get_students_emails_from_courses(current_user.courses))
    statistics_list, statistics_info = [], []
    if request.method == 'POST' and form.validate_on_submit():
        student = Student.query.filter_by(email=form.email.data).first()
        course = Course.query.filter_by(name=form.course.data).first()
        statistics_list, statistics_info = get_statistics(
            student, course, current_user.courses)
    return render_template('teacher/statistics.html',
                           statisticsList=statistics_list,
                           statistics_info=statistics_info,
                           form=form)
コード例 #11
0
ファイル: solution_route.py プロジェクト: michaljk1/Pointer
def view_solutions():
    validate_role(current_user, User.Roles['TEACHER'])
    course, lesson, exercise = request.args.get('course'), request.args.get(
        'lesson'), request.args.get('exercise')
    course_db = Course.query.filter_by(name=course).first()
    solutions = []
    if course is None or lesson is None or exercise is None or course_db is None or course_db not in current_user.courses:
        form = SolutionTeacherSearchForm()
    else:
        form = SolutionTeacherSearchForm(course=course,
                                         lesson=lesson,
                                         exercise=exercise)
        solutions = exercise_teacher_query(
            form=form, courses=current_user.get_course_names()).all()
    for course in current_user.courses:
        form.course.choices.append((course.name, course.name))
    if request.method == 'POST' and form.validate_on_submit():
        solutions = exercise_teacher_query(
            form=form, courses=current_user.get_course_names()).all()
        if len(solutions) == 0:
            flash('Brak rozwiązań odpowiadających danym kryteriom', 'message')
    return render_template('teacher/solutions.html',
                           form=form,
                           solutions=solutions)
コード例 #12
0
ファイル: course_route.py プロジェクト: michaljk1/Pointer
def view_courses():
    validate_role(current_user, User.Roles['TEACHER'])
    return render_template('teacher/courses.html',
                           courses=current_user.courses)
コード例 #13
0
def view_exports():
    validate_role(current_user, User.Roles['TEACHER'])
    exports = sorted(current_user.exports,
                     key=lambda export: export.id,
                     reverse=True)
    return render_template('teacher/exports.html', exports=exports)
コード例 #14
0
def export_statistics_pdf():
    validate_role(current_user, User.Roles['TEACHER'])
    export = get_pdf_statistics_export(request.args.getlist('statistics_info'),
                                       current_user)
    return redirect(url_for('teacher.download', domain='export', id=export.id))
コード例 #15
0
def export_solutions_pdf():
    validate_role(current_user, User.Roles['TEACHER'])
    solutions = Solution.query.filter(
        Solution.id.in_(request.args.getlist('ids'))).all()
    export = get_pdf_solution_export(solutions, current_user)
    return redirect(url_for('teacher.download', domain='export', id=export.id))
コード例 #16
0
ファイル: student_routes.py プロジェクト: michaljk1/Pointer
def index():
    validate_role(current_user, User.Roles['STUDENT'])
    return redirect(url_for('student.view_courses'))
コード例 #17
0
ファイル: admin_routes.py プロジェクト: michaljk1/Pointer
def index():
    validate_role(current_user, User.Roles['ADMIN'])
    return redirect(url_for('admin.teacher_roles'))
コード例 #18
0
ファイル: student_routes.py プロジェクト: michaljk1/Pointer
def view_courses():
    validate_role(current_user, User.Roles['STUDENT'])
    return render_template('student/courses.html',
                           courses=current_user.courses)