Example #1
0
    def get_specific_exercise(language, name):
        known_language = Language.get(language)

        if not known_language:
            return 404

        exercise, artifact = session.query(Exercise, Artifact)\
            .filter(Exercise.artifact_id == Artifact.id)\
            .filter_by(language=language, name=name)\
            .order_by(asc(Exercise.difficulty))\
            .first()

        results = complete_exercise_to_dict(exercise, artifact)

        return jsonify(results)
Example #2
0
    def get_topics_by_language(language):
        limit = extract_int_arg(request, 'page_size', default=default_limit)
        offset = extract_int_arg(request, 'page', default=0)
        known_language = Language.get(language)

        if not known_language:
            return (404)

        topic = func.unnest(Exercise.topics)
        results = session\
            .query(topic, Exercise.language)\
            .filter_by(language=known_language)\
            .group_by(topic, Exercise.language)\
            .order_by(asc(topic))\
            .limit(limit)\
            .offset(offset)\
            .all()

        return jsonify(pluck_first_column(results))
Example #3
0
    def get_exercises_by_language(language):
        limit = extract_int_arg(request, 'page_size', default=default_limit)
        offset = extract_int_arg(request, 'page', default=0)

        known_language = Language.get(language)

        if not known_language:
            return (404)

        exercises = session.query(Exercise)\
            .filter_by(language=known_language)\
            .order_by(asc(Exercise.difficulty))\
            .limit(limit)\
            .offset(offset)\
            .all()

        results = [exercise_to_dict(ex) for ex in exercises]

        return jsonify(results)