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 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)
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=[])
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)
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)
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)
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'))
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)
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)
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)
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)
def view_courses(): validate_role(current_user, User.Roles['TEACHER']) return render_template('teacher/courses.html', courses=current_user.courses)
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)
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))
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))
def index(): validate_role(current_user, User.Roles['STUDENT']) return redirect(url_for('student.view_courses'))
def index(): validate_role(current_user, User.Roles['ADMIN']) return redirect(url_for('admin.teacher_roles'))
def view_courses(): validate_role(current_user, User.Roles['STUDENT']) return render_template('student/courses.html', courses=current_user.courses)