# First things first: apply monkey patch, so that no code gets executed without # patched libraries! import eventlet eventlet.monkey_patch() from dotenv import load_dotenv # noqa import os # noqa # Load environment variables DOTENV_FILE = os.path.join(os.path.dirname(__file__), '.env') if os.path.exists(DOTENV_FILE): load_dotenv(DOTENV_FILE) from app import create_app, db, socketio # noqa from app.models import (Corpus, CorpusFile, Job, JobInput, JobResult, QueryResult, Role, User) # noqa from flask_migrate import Migrate, upgrade # noqa app = create_app(os.environ.get('NOPAQUE_CONFIG', 'development')) migrate = Migrate(app, db, compare_type=True) @app.shell_context_processor def make_shell_context(): return {'Corpus': Corpus, 'CorpusFile': CorpusFile, 'db': db, 'Job': Job, 'JobInput': JobInput, 'JobResult': JobResult, 'QueryResult': QueryResult, 'Role': Role, 'User': User} @app.cli.command() def deploy(): """Run deployment tasks.""" # migrate database to latest revision upgrade() # create or update user roles Role.insert_roles() @app.cli.command() def tasks(): from app.tasks import task_runner task_runner.run() @app.cli.command() def test(): """Run the unit tests.""" import unittest tests = unittest.TestLoader().discover('tests') unittest.TextTestRunner(verbosity=2).run(tests) if __name__ == '__main__': host = os.environ.get('NOPAQUE_HOST', '0.0.0.0') port = int(os.environ.get('NOPAQUE_PORT', '5000')) socketio.run(app, host=host, port=port)