예제 #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
def change_open_course(course_id):
    course = Course.query.filter_by(id=course_id).first()
    validate_course(current_user, User.Roles['TEACHER'], course)
    course.is_open = not course.is_open
    db.session.commit()
    flash('Zapisano zmiany', 'message')
    return redirect(url_for('teacher.view_course', course_name=course.name))
예제 #3
0
def delete_student(course_name):
    course = Course.query.filter_by(name=course_name).first()
    validate_course(current_user, User.Roles['TEACHER'], course)
    form = DeleteStudentForm()
    for student in course.get_students():
        form.email.choices.append((student.email, student.email))
    if form.validate_on_submit():
        student = Student.query.filter_by(email=form.email.data).first()
        student.courses.remove(course)
        db.session.commit()
        flash('Usunięto studenta', 'message')
        return redirect(
            url_for('teacher.delete_student', course_name=course.name))
    return render_template('teacher/delete_student.html',
                           form=form,
                           course=course)
예제 #4
0
def add_lesson(course_name: str):
    course: Course = Course.query.filter_by(name=course_name).first()
    validate_course(current_user, User.Roles['TEACHER'], course)
    form = LessonForm()
    if request.method == 'POST' and form.validate_on_submit():
        lesson_name = form.name.data
        if not course.is_lesson_name_proper(lesson_name):
            flash('Wprowadź inną nazwę lekcji', 'error')
            return redirect(
                url_for('teacher.add_lesson', course_name=course.name))
        new_lesson = course.add_lesson(lesson_name,
                                       request.files['pdf_content'],
                                       request.form.get('editordata'))
        db.session.commit()
        return redirect(url_for('teacher.view_lesson',
                                lesson_id=new_lesson.id))
    return render_template('teacher/add_lesson.html', form=form, course=course)
예제 #5
0
def add_student(course_name):
    course = Course.query.filter_by(name=course_name).first()
    validate_course(current_user, User.Roles['TEACHER'], course)
    form = AddStudentForm()
    for student in Student.query.filter(~Student.courses.any(
            name=course.name)).all():
        form.email.choices.append((student.email, student.email))
    if form.validate_on_submit():
        student = Student.query.filter_by(email=form.email.data).first()
        student.courses.append(course)
        student.launch_course_email(course_name)
        db.session.commit()
        flash('Dodano studenta', 'message')
        return redirect(url_for('teacher.add_student',
                                course_name=course.name))
    return render_template('teacher/add_student.html',
                           form=form,
                           course=course)
예제 #6
0
def view_course(course_name):
    course = Course.query.filter_by(name=course_name).first()
    validate_course(current_user, User.Roles['TEACHER'], course)
    return render_template('teacher/course.html', course=course)
예제 #7
0
def view_course(course_name):
    course = Course.query.filter_by(name=course_name).first()
    validate_course(current_user, User.Roles['STUDENT'], course)
    return render_template('student/course.html', course=course)