import eventlet
eventlet.monkey_patch()  # noqa
from app import create_app, db, socketio
from app.models import Corpus, Job, Role, User
from flask_migrate import Migrate, upgrade
import os


app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)


@app.shell_context_processor
def make_shell_context():
    return {'db': db,
            'Corpus': Corpus,
            'Job': Job,
            '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 test():
    """Run the unit tests."""
    import unittest
    tests = unittest.TestLoader().discover('tests')
    unittest.TextTestRunner(verbosity=2).run(tests)


if __name__ == '__main__':
    socketio.run(app, host='0.0.0.0')