Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 79 additions & 69 deletions app/web_speech_trainer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')

Expand Down Expand Up @@ -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")
Expand All @@ -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')
Loading