# First things first: apply monkey patch, so that no code gets executed without # patched libraries! import eventlet eventlet.monkey_patch() from app import cli, create_app, db, scheduler, socketio # noqa from app.models import ( Corpus, CorpusFile, Job, JobInput, JobResult, Permission, Role, TesseractOCRPipelineModel, TranskribusHTRPipelineModel, User ) # noqa from flask import Flask # noqa from typing import Any, Dict # noqa app: Flask = create_app() cli.register(app) @app.context_processor def make_context() -> Dict[str, Any]: ''' Adds variables to the template context. ''' return {'Permission': Permission} @app.shell_context_processor def make_shell_context() -> Dict[str, Any]: ''' Adds variables to the shell context. ''' return { 'Corpus': Corpus, 'CorpusFile': CorpusFile, 'db': db, 'Job': Job, 'JobInput': JobInput, 'JobResult': JobResult, 'Permission': Permission, 'Role': Role, 'TesseractOCRPipelineModel': TesseractOCRPipelineModel, 'TranskribusHTRPipelineModel': TranskribusHTRPipelineModel, 'User': User } def main(): with app.app_context(): if app.config['NOPAQUE_IS_PRIMARY_INSTANCE']: for corpus in Corpus.query.filter(Corpus.num_analysis_sessions > 0).all(): corpus.num_analysis_sessions = 0 db.session.commit() scheduler.start() socketio.run(app, host='0.0.0.0') if __name__ == '__main__': main()