コード例 #1
0
def program(_id):
    if len(request.form) > 0:
        with ctx().data.session_scope() as session:
            program = session.query(Program).filter(Program.id == _id).one()
            ctx().data.update_from_object(program, request.form)
    return render_template("program.html",
                           **{'program': get_program_by_id(_id)})
コード例 #2
0
def new_zipcode(body) -> tuple:
    """
    Endpoint to create new zipcode.  Primarily used for initial data loading into db.
    :param dict body: injected by `@parse_json` decorator
    :return:
    """
    zipcode = Zipcode(**body)
    try:
        ctx().data.save(zipcode)
    except Exception as e:
        return jsonify(error=str(e)), 400

    return jsonify(response='ok'), 201
コード例 #3
0
def new_program(body: dict) -> tuple:
    """
    Endpoint to create a new program.
    :param dict body: request body injected by `@parse_json` decorator
    :return:
    """
    program = Program(**body)
    try:
        ctx().data.save(program)
    except Exception as e:
        return jsonify(error=str(e)), 400

    return jsonify(response='ok'), 201
コード例 #4
0
def get_program_by_id(_id):
    """

    :param _id:
    :return:
    """
    with ctx().data.session_scope() as session:
        query = session.query(Program).filter(Program.id == _id).one()
    return jsonify(response=query.to_json()), 200
コード例 #5
0
def get_program_categories():
    """
    Endpoint to fetch searchable categories
    :return:
    """
    try:
        with ctx().data.session_scope() as session:
            values = set()
            for v in session.query(Program.category).distinct():
                for category in v.category.split(','):
                    values.add(category)
    except Exception as e:
        return jsonify(error=str(e)), 400

    return jsonify(response=list(values))
コード例 #6
0
def programs_search(params: dict) -> tuple:
    """
    Endpoint to search programs.
    :param dict params: query parameters injected by `parse_query` decorator
    :return:
    """
    with ctx().data.session_scope() as session:
        query = session.query(Program)
    results = list()

    # db query filters by query parameters
    for param in params:
        query = query.filter(
            getattr(Program, param).like(params[param].replace('*', '%')))

    for program in query:
        results.append(program.to_json())
    return jsonify(response=results), 200
コード例 #7
0
from access_austin import app, AppContext as ctx
from access_austin.data import Data
import access_austin.rest  # REST endpoints
import access_austin.views  # Portal views

if __name__ == '__main__':
    # init data layer and store in app context
    # TODO: add configuration via file/env vars/etc.
    ctx().data = Data("odd_mysql", 3306, "webapp", "webapp", "somepass")
    # create database schemas
    ctx().data.create_all()
    # run the server
    app.run(host='0.0.0.0', port=8080)