Example #1
0
def lesson_check_code(course_slug, lesson_slug):
    if not is_name_valid_for_directory(
            course_slug) or not is_name_valid_for_directory(lesson_slug):
        abort(404)
    r = request.json
    result = lesson_check_execute(course_slug, lesson_slug, r['code'])
    return jsonify(result)
Example #2
0
def lesson_image(course_slug, lesson_slug, image_name):
    if not is_name_valid_for_directory(course_slug) or not is_name_valid_for_directory(lesson_slug)\
            or not is_name_valid_for_filename(image_name):
        abort(403)
    img = lesson_image_path(course_slug, lesson_slug, image_name)
    if img:
        return send_from_directory(os.path.dirname(img), os.path.basename(img))
    else:
        abort(403)
Example #3
0
def lesson_logo(course_slug, lesson_slug):
    if not is_name_valid_for_directory(
            course_slug) or not is_name_valid_for_directory(lesson_slug):
        abort(404)
    logo = lesson_logo_from_path(course_slug, lesson_slug)
    if logo:
        return send_from_directory(os.path.dirname(logo),
                                   os.path.basename(logo))
    else:
        return course_logo(course_slug)
Example #4
0
def course_logo(course_slug):
    if not is_name_valid_for_directory(course_slug):
        abort(404)
    logo = course_logo_from_path(course_slug)
    if logo:
        return send_from_directory(os.path.dirname(logo),
                                   os.path.basename(logo))
    abort(404)
Example #5
0
def course_statistics(course_slug):
    if not is_name_valid_for_directory(course_slug):
        abort(404)
    users_table = get_users_for_course_statistics(course_slug)
    lessons = course_content_from_path(course_slug)
    statistics_table = []
    for row in users_table.values():
        statistics_row = {
            'uid': row['uid'],
            'username': row['username'],
            'lessons': {},
        }
        for lesson in lessons:
            statistics_row['lessons'][lesson['slug']] = {
                'progress':
                lesson['slug'] in row['lessons']
                and row['lessons'][lesson['slug']] == True,
            }
        statistics_table.append(statistics_row)
    return jsonify({
        'statistics_header': lessons,
        'statistics_content': statistics_table
    })
Example #6
0
def lesson_check_status(course_slug, lesson_slug, task_id):
    if not is_name_valid_for_directory(
            course_slug) or not is_name_valid_for_directory(lesson_slug):
        abort(404)
    result = lesson_check_results(course_slug, lesson_slug, task_id)
    return jsonify(result)
Example #7
0
def lesson_content(course_slug, lesson_slug):
    if not is_name_valid_for_directory(
            course_slug) or not is_name_valid_for_directory(lesson_slug):
        abort(404)
    lesson = lesson_content_from_path(course_slug, lesson_slug)
    return jsonify(lesson)
Example #8
0
def course_info(course_slug):
    if not is_name_valid_for_directory(course_slug):
        abort(404)
    course = course_info_from_path(course_slug)
    return jsonify(course)