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