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)
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))
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)
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)
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)
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)
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)