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