import os import sys from flask.ext.script import Manager, Server, Shell from flask.ext.migrate import Migrate, MigrateCommand, upgrade from app import create_app, db, cache, create_celery_app from app.caches import SessionCache from app.models import * import unittest app = create_app(os.environ.get("ENV", "prod")) celery = create_celery_app(app) manager = Manager(app) migrate = Migrate(app, db) manager.add_command("db", MigrateCommand) manager.add_command("runserver", Server(host="0.0.0.0", port=80)) manager.add_command("runtestserver", Server(host="127.0.0.1", port=8080)) # Set flask-restful to be utf-8 reload(sys) sys.setdefaultencoding("utf-8") @app.teardown_appcontext def shutdown_session(exception=None): if app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"]: db.session.commit() db.session.remove() def make_shell_context(): return dict(app=app, db=db, User=User, Organization=Organization, Location=Location, Role=Role, Schedule2=Schedule2, Shift2=Shift2, RecurringShift=RecurringShift, RoleToUser=RoleToUser, Preference=Preference, cache=cache, SessionCache=SessionCache, Timeclock=Timeclock, TimeOffRequest=TimeOffRequest, ApiKey=ApiKey) manager.add_command("shell", Shell(make_context=make_shell_context)) @manager.command def test(): """Run the unit tests.""" tests = unittest.TestLoader().discover('tests/unit') unittest.TextTestRunner(verbosity=2).run(tests) @manager.command def deploy(): """Run deployment tasks.""" # migrate database to latest revision upgrade() if __name__ == '__main__': manager.run()