diff --git a/Procfile b/Procfile index caadab5e..58cb12ac 100644 --- a/Procfile +++ b/Procfile @@ -1,4 +1,4 @@ -web: gunicorn dribdat.app:create_app\(\) -b 0.0.0.0:$PORT -w 3 --log-file=- +web: gunicorn dribdat.app:init_app\(\) -b 0.0.0.0:$PORT -w 3 --log-file=- init: python manage.py db init migrate: python manage.py db migrate upgrade: python manage.py db upgrade diff --git a/autoapp.py b/autoapp.py index 936bfe7f..9c099ffc 100755 --- a/autoapp.py +++ b/autoapp.py @@ -2,9 +2,9 @@ """Create an application instance.""" from flask.helpers import get_debug_flag -from dribdat.app import create_app +from dribdat.app import init_app from dribdat.settings import DevConfig, ProdConfig CONFIG = DevConfig if get_debug_flag() else ProdConfig -app = create_app(CONFIG) +app = init_app(CONFIG) diff --git a/dribdat/app.py b/dribdat/app.py index 30eca8b2..2ed82cd1 100644 --- a/dribdat/app.py +++ b/dribdat/app.py @@ -17,7 +17,7 @@ from dribdat.settings import ProdConfig from dribdat.utils import timesince from flask_misaka import Misaka -def create_app(config_object=ProdConfig): +def init_app(config_object=ProdConfig): """An application factory, as explained here: http://flask.pocoo.org/docs/patterns/appfactories/. :param config_object: The configuration object to use. diff --git a/manage.py b/manage.py index 0d9db73f..fdb22e66 100644 --- a/manage.py +++ b/manage.py @@ -1,46 +1,43 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- + import os -from flask_script import Manager, Shell, Server -from flask_script.commands import Clean, ShowUrls + +from flask import Flask +from flask.cli import FlaskGroup from flask_migrate import MigrateCommand -from dribdat.app import create_app +from dribdat.app import init_app from dribdat.user.models import User from dribdat.settings import DevConfig, ProdConfig from dribdat.database import db -if os.environ.get("DRIBDAT_ENV") == 'prod': - app = create_app(ProdConfig) -else: - app = create_app(DevConfig) - HERE = os.path.abspath(os.path.dirname(__file__)) TEST_PATH = os.path.join(HERE, 'tests') -manager = Manager(app) - - -def _make_context(): - """Return context dict for a shell session so you can access - app, db, and the User model by default. - """ +def shell_context(): + """Return context dict for a shell session""" return {'app': app, 'db': db, 'User': User} +def create_app(script_info=None): + """Initialise the app object""" + if os.environ.get("DRIBDAT_ENV") == 'prod': + app = init_app(ProdConfig) + else: + app = init_app(DevConfig) + app.shell_context_processor(shell_context) + return app -@manager.command +cli = FlaskGroup(create_app=create_app) + +@cli.command def test(): """Run the tests.""" import pytest exit_code = pytest.main([TEST_PATH, '--verbose']) return exit_code - -manager.add_command('server', Server(port=5000)) -manager.add_command('shell', Shell(make_context=_make_context)) -manager.add_command('db', MigrateCommand) -manager.add_command("urls", ShowUrls()) -manager.add_command("clean", Clean()) +cli.add_command('db', MigrateCommand) if __name__ == '__main__': - manager.run() + cli() diff --git a/tests/conftest.py b/tests/conftest.py index 4ae1de09..665a3717 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,7 +4,7 @@ import pytest from webtest import TestApp -from dribdat.app import create_app +from dribdat.app import init_app from dribdat.database import db as _db from dribdat.settings import TestConfig @@ -14,7 +14,7 @@ from .factories import UserFactory @pytest.yield_fixture(scope='function') def app(): """An application for the tests.""" - _app = create_app(TestConfig) + _app = init_app(TestConfig) ctx = _app.test_request_context() ctx.push() diff --git a/tests/test_config.py b/tests/test_config.py index b458e1b0..ad658396 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- """Test configs.""" -from dribdat.app import create_app +from dribdat.app import init_app from dribdat.settings import DevConfig, ProdConfig def test_production_config(): """Production config.""" - app = create_app(ProdConfig) + app = init_app(ProdConfig) assert app.config['ENV'] == 'prod' assert app.config['DEBUG'] is False assert app.config['DEBUG_TB_ENABLED'] is False @@ -15,7 +15,7 @@ def test_production_config(): def test_dev_config(): """Development config.""" - app = create_app(DevConfig) + app = init_app(DevConfig) assert app.config['ENV'] == 'dev' assert app.config['DEBUG'] is True assert app.config['ASSETS_DEBUG'] is True