예제 #1
0
def get_departments():
    """
    List all departments
    """
    page = request.args.get('page', 1, int)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE, int)
    order_by = request.args.get('orderBy', 'id', str)
    term_id = request.args.get('term_id', None, str)
    query = request.args.get('query', '', str)
    highlights = request.args.get('highlights', False, bool)

    params = dict(query=query,
                  page=page,
                  page_size=page_size,
                  order_by=order_by,
                  term_id=term_id)

    operation = get_all_departments
    if query:
        operation = search_departments if not highlights else search_highlights_departments
        params.pop('term_id')
        params.pop('order_by')
    else:
        params.pop('query')

    results = operation(**params)

    # results = get_all_departments(page, page_size, order_by, term_id)
    return responsify(results), 200
예제 #2
0
def get_courses():
    """
    List many courses
    """
    query = request.args.get('query', '', str)
    page = request.args.get('page', 1, int)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE, int)
    order_by = request.args.get('orderBy', 'id', str)
    highlights = request.args.get('highlights', False, bool)

    facets = get_id_facets_from_request(
        ['department_id', 'instructor_id', 'term_id'])

    params = dict(query=query,
                  page=page,
                  page_size=page_size,
                  order_by=order_by,
                  facets=facets)

    operation = get_all_courses
    if query:
        operation = search_courses if not highlights else search_highlights_courses
        params.pop('order_by')
    else:
        params.pop('query')

    results = operation(**params)

    # jsonify made this slow :(
    return responsify(results), 200
def get_instructors():
    """
    List all instructors
    """
    page = request.args.get('page', 1, int)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE, int)
    order_by = request.args.get('orderBy', 'id', str)
    term_id = request.args.get('term_id', None, str)
    department_id = request.args.get('department_id', None, str)
    query = request.args.get('query', '', str)
    highlights = request.args.get('highlights', False, bool)

    params = dict(query=query, page=page, page_size=page_size, order_by=order_by, term_id=term_id,
                  department_id=department_id)

    operation = get_all_instructors
    if query:
        operation = search_instructors if not highlights else search_highlights_instructors
        params = {k: v for k, v in params.items() if k not in ['order_by', 'term_id', 'department_id']}
    else:
        params.pop('query')

    results = operation(**params)

    return responsify(results), 200
예제 #4
0
def get_course(report_id):
    """
    Get a course given its identifier
    """
    report = get_single_course(report_id)
    if not report:
        flask.abort(404)
    else:
        return responsify(report), 200
def get_instructor(instructor_id):
    """
    Get an instructor given its identifier
    """
    instructor = get_single_instructor(instructor_id)
    if not instructor:
        flask.abort(404)
    else:
        return responsify(instructor), 200
예제 #6
0
def get_term(term_id):
    """
    get a term given its identifier
    """
    term = get_single_term(term_id)
    if not term:
        flask.abort(404)
    else:
        return responsify(term), 200
예제 #7
0
def get_department(department_id):
    """
    get a department given its identifier
    """
    department = get_single_department(department_id)
    if not department:
        flask.abort(404)
    else:
        return responsify(department), 200
예제 #8
0
def get_scores(report_id):
    """
    Get a course report and scores given its identifier
    """
    report = get_single_report(report_id)
    if not report:
        flask.abort(404)
    else:
        # Avoiding jsonify because it can be slow
        return responsify(report), 200
예제 #9
0
def get_terms():
    """
    List all terms
    """
    page = request.args.get('page', 1)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE)
    order_by = request.args.get('orderBy', 'id')

    results = get_all_terms(page, page_size, order_by)

    return responsify(results), 200
예제 #10
0
def get_categories():
    """
    get list of answerable questions
    """
    page = request.args.get('page', 1)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE)
    order_by = request.args.get('orderBy', 'id')

    results = get_all_categories(page, page_size, order_by)

    return responsify(results), 200
예제 #11
0
def get_questions():
    """
    get list of answerable questions
    """
    page = request.args.get('page', 1)
    page_size = request.args.get('pageSize', DEFAULT_PAGE_SIZE)
    order_by = request.args.get('orderBy', 'id')

    facets = get_id_facets_from_request(['category_id'])

    results = get_all_questions(page, page_size, order_by, facets)

    return responsify(results), 200