Source code for backend.class_list

"""
class_list.py
==============
Endpoints for retrieving a list of all classes. All routes start with
/api/classList
All incoming request parameters are wrapped in a JSON body.
All outgoing response returns are wrapped in a JSON entry with key 'payload',
like this:

.. code-block::

    {
      "error": "false",
      "error-msg": None,
        "payload": {
        "return-1": "true"
      }
    }


Note that method documentation assumes you are using jsonResponse/errorResponse
to generate the response, and only shows the actual returns within payload.
Ditto for request parameters.
"""

import csv
import os
import flask
from flask import (
    Blueprint, flash, g, redirect, render_template, request, session, url_for, current_app
)
bp = Blueprint('class_list', __name__, url_prefix='/api/classList')
from form_response import jsonResponse, errorResponse

[docs]@bp.route('/get', methods=('GET', 'POST')) def class_list(): """ POST Get the class list for a given subject. Parameters ------ subjectArea: str Returns ------ uid: list[str] list of all classes associated with the given subject area. Raises ------ BadRequest Some part of the required parameters is missing. """ response = None if request.method == 'POST': data = request.get_json() if not data: return errorResponse('Data Body Required') subjectArea = data.get('subjectArea') if not subjectArea: return errorResponse('Subject Area Required') this_folder = os.path.dirname(os.path.abspath(__file__)) class_file = open(os.path.join(this_folder, 'resources/classes.csv'), mode='r') reader = csv.reader(class_file) classes = [] for row in reader: if row[0] == subjectArea: classes.append(row[0] + ' ' + row[2]) class_file.close() return jsonResponse({"classList": classes}) return errorResponse('POST to this endpoint')