#!python3 import argparse from flask import abort, Flask, g, jsonify, render_template, request from gevent import pywsgi, monkey from geventwebsocket.handler import WebSocketHandler from queue import Queue import adc2019system webui = Flask(__name__) @webui.route('/') def webui_index(): # return adc2019system.role.role return render_template('index.html') @webui.route('/template/questions') def webui_template_questions(): if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): questions = adc2019system.role.get_questions() return render_template('part_questions.html', questions=questions) else: return abort(404) @webui.route('/template/question/') def webui_template_question_status(name=None): if name is None: return abort(404) if (adc2019system.role is not None) and (adc2019system.role.type == 'host'): questions = adc2019system.role.get_questions() return render_template('part_question_status.html', questions=questions) else: return abort(404) @webui.route('/api/', methods=['GET', 'POST']) def webui_api(cmd=None): if cmd is None: return jsonify({'version': 'v1.0', 'app': 'adc2019system'}) if request.method == 'POST': if request.headers['Content-Type'] != 'application/json': return abort(400) else: params = request.json else: params = None res = adc2019system.call_api(request.method, cmd, params) if res is None: return abort(404) else: return jsonify(res) @webui.route('/ws') def webui_ws(): pass def init_system(args): adc2019system.init(args) if __name__ == "__main__": parser = argparse.ArgumentParser(description='ADC2019 System') parser.add_argument('-p', '--port', default=5000, type=int, action='store', help='Web UI and API port') parser.add_argument('-c', '--config', default=None, type=str, action='store', help='Config file') parser.add_argument('--debug', default=False, action='store_true', help='Debug mode') args = vars(parser.parse_args()) init_system(args) if args["debug"]: webui.debug = True webui.threaded = True # webui.run(host='0.0.0.0', threaded=True) server = pywsgi.WSGIServer(("", args['port']), webui, handler_class=WebSocketHandler) server.serve_forever()