diff --git a/app/web_speech_trainer.py b/app/web_speech_trainer.py index eeaee66..6a1f645 100644 --- a/app/web_speech_trainer.py +++ b/app/web_speech_trainer.py @@ -36,27 +36,8 @@ from app.training_manager import TrainingManager from app.utils import ALLOWED_EXTENSIONS, DEFAULT_EXTENSION -app = Flask(__name__) -app.register_blueprint(api_audio) -app.register_blueprint(api_dump) -app.register_blueprint(api_criteria) -app.register_blueprint(api_criteria_pack) -app.register_blueprint(api_files) -app.register_blueprint(api_logs) -app.register_blueprint(api_presentations) -app.register_blueprint(api_sessions) -app.register_blueprint(api_task_attempts) -app.register_blueprint(api_trainings) -app.register_blueprint(api_version) -app.register_blueprint(routes_admin) -app.register_blueprint(routes_criterion) -app.register_blueprint(routes_criteria_pack) -app.register_blueprint(routes_lti) -app.register_blueprint(routes_presentations) -app.register_blueprint(routes_trainings) -app.register_blueprint(routes_task_attempts) -app.register_blueprint(routes_version) -app.register_blueprint(routes_capacity) + + logger = get_root_logger(service_name='web') @@ -90,70 +71,95 @@ def resubmit_failed_trainings(): TrainingManager().add_training(current_training.pk) -@app.route('/', methods=['GET']) -def index(): - return render_template('intro_page.html') - - - -@app.route('/init/', methods=['GET']) -def init(): - """ - Route for session initialization. Enabled only if is_testing_active returns True. - :return: Empty dictionary - """ - from app.utils import is_testing_active - if not is_testing_active(): - return {}, 200 - session['session_id'] = Config.c.testing.session_id - session['full_name'] = Config.c.testing.lis_person_name_full - session['consumer_key'] = Config.c.testing.oauth_consumer_key - session['task_id'] = Config.c.testing.custom_task_id - session['criteria_pack_id'] = Config.c.testing.custom_criteria_pack_id - session['feedback_evaluator_id'] = Config.c.testing.custom_feedback_evaluator_id - session['formats'] = list(set(Config.c.testing.custom_formats.split(',')) & ALLOWED_EXTENSIONS) or [DEFAULT_EXTENSION] - from app.mongo_odm import TasksDBManager, TaskAttemptsDBManager - session['task_attempt_id'] = str(TaskAttemptsDBManager().add_task_attempt( - username=session['session_id'], - task_id=session['task_id'], - params_for_passback={ - 'lis_outcome_service_url': Config.c.testing.lis_outcome_service_url, - 'lis_result_sourcedid': Config.c.testing.lis_result_source_did, - 'oauth_consumer_key': Config.c.testing.oauth_consumer_key, - }, - training_count=3, - ).pk) - TasksDBManager().add_task_if_absent( - Config.c.testing.custom_task_id, - Config.c.testing.custom_task_description, - int(Config.c.testing.custom_attempt_count), - float(Config.c.testing.custom_required_points), - Config.c.testing.custom_criteria_pack_id, - ) - return {}, 200 - - -def setupLocales(locale: str, default: str = "ru"): +def setupLocales(app: Flask, locale: str, default: str = "ru"): loadLocales("./locale") changeLocale(locale, default) setupTemplatesAlias(app) - -if __name__ == '__main__': - Config.init_config(sys.argv[1]) +def initApp(config_path=None): + app = Flask(__name__) + + Config.init_config(config_path) + werkzeug_logger = logging.getLogger('werkzeug') werkzeug_logger.addHandler(get_logging_stdout_handler()) werkzeug_logger.setLevel(logging.ERROR) werkzeug_logger.propagate = False + app.logger.addHandler(get_logging_stdout_handler()) app.logger.propagate = False + app.wsgi_app = ReverseProxied(app.wsgi_app) app.secret_key = Config.c.constants.app_secret_key app.config['BUG_REPORT_FORM'] = Config.c.bugreport.form_link app.config['BUG_REPORT_MAIL'] = Config.c.bugreport.report_mail + app.register_blueprint(api_audio) + app.register_blueprint(api_dump) + app.register_blueprint(api_criteria) + app.register_blueprint(api_criteria_pack) + app.register_blueprint(api_files) + app.register_blueprint(api_logs) + app.register_blueprint(api_presentations) + app.register_blueprint(api_sessions) + app.register_blueprint(api_task_attempts) + app.register_blueprint(api_trainings) + app.register_blueprint(api_version) + app.register_blueprint(routes_admin) + app.register_blueprint(routes_criterion) + app.register_blueprint(routes_criteria_pack) + app.register_blueprint(routes_lti) + app.register_blueprint(routes_presentations) + app.register_blueprint(routes_trainings) + app.register_blueprint(routes_task_attempts) + app.register_blueprint(routes_version) + app.register_blueprint(routes_capacity) + + @app.route('/', methods=['GET']) + def index(): + return render_template('intro_page.html') + + + + @app.route('/init/', methods=['GET']) + def init(): + """ + Route for session initialization. Enabled only if is_testing_active returns True. + + :return: Empty dictionary + """ + from app.utils import is_testing_active + if not is_testing_active(): + return {}, 200 + session['session_id'] = Config.c.testing.session_id + session['full_name'] = Config.c.testing.lis_person_name_full + session['consumer_key'] = Config.c.testing.oauth_consumer_key + session['task_id'] = Config.c.testing.custom_task_id + session['criteria_pack_id'] = Config.c.testing.custom_criteria_pack_id + session['feedback_evaluator_id'] = Config.c.testing.custom_feedback_evaluator_id + session['formats'] = list(set(Config.c.testing.custom_formats.split(',')) & ALLOWED_EXTENSIONS) or [DEFAULT_EXTENSION] + from app.mongo_odm import TasksDBManager, TaskAttemptsDBManager + session['task_attempt_id'] = str(TaskAttemptsDBManager().add_task_attempt( + username=session['session_id'], + task_id=session['task_id'], + params_for_passback={ + 'lis_outcome_service_url': Config.c.testing.lis_outcome_service_url, + 'lis_result_sourcedid': Config.c.testing.lis_result_source_did, + 'oauth_consumer_key': Config.c.testing.oauth_consumer_key, + }, + training_count=3, + ).pk) + TasksDBManager().add_task_if_absent( + Config.c.testing.custom_task_id, + Config.c.testing.custom_task_description, + int(Config.c.testing.custom_attempt_count), + float(Config.c.testing.custom_required_points), + Config.c.testing.custom_criteria_pack_id, + ) + return {}, 200 + # check correct criterions if not check_criterions(CRITERIONS): logging.critical("Criterion's checking failed! See traceback") @@ -167,6 +173,10 @@ def setupLocales(locale: str, default: str = "ru"): ConsumersDBManager().add_consumer(Config.c.constants.lti_consumer_key, Config.c.constants.lti_consumer_secret) resubmit_failed_trainings() - setupLocales(Config.c.locale.language) + setupLocales(app, Config.c.locale.language) + + return app +if __name__ == '__main__': + app = initApp(sys.argv[1]) app.run(host='0.0.0.0')