summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2016-01-31 23:22:33 +0100
committerAlexander Sulfrian <alexander@sulfrian.net>2016-02-02 04:23:27 +0100
commit86f8914def48346d807347c2d43edd543ff4f3e9 (patch)
treef033a5cbc082f9816e0197c5e4ac5ec48e5569fa
parent7ac707361e08d381c73a2ff26b47729af03629c6 (diff)
downloadweb-86f8914def48346d807347c2d43edd543ff4f3e9.tar.gz
web-86f8914def48346d807347c2d43edd543ff4f3e9.tar.bz2
web-86f8914def48346d807347c2d43edd543ff4f3e9.zip
Use factory pattern to create app
-rw-r--r--accounts/__init__.py44
-rw-r--r--app.wsgi3
-rwxr-xr-xmanage.py4
3 files changed, 29 insertions, 22 deletions
diff --git a/accounts/__init__.py b/accounts/__init__.py
index 0eb202a..e650586 100644
--- a/accounts/__init__.py
+++ b/accounts/__init__.py
@@ -2,32 +2,36 @@
from flask import Flask, g, session
from models import Service
-from utils import *
+from utils import get_backend
from utils.sessions import EncryptedSessionInterface
from utils.login import create_login_manager
from views import default, login, admin
-app = Flask(__name__)
-app.register_blueprint(default.bp)
-app.register_blueprint(login.bp)
-app.register_blueprint(admin.bp, url_prefix='/admin')
-app.config.from_object('accounts.default_settings')
-app.config.from_envvar('SPLINE_ACCOUNT_WEB_SETTINGS', silent=True)
-app.session_interface = EncryptedSessionInterface()
+def create_app():
+ app = Flask(__name__)
+ app.config.from_object('accounts.default_settings')
+ app.config.from_envvar('SPLINE_ACCOUNT_WEB_SETTINGS', silent=True)
-app.all_services = list()
-for (name, url) in app.config.get('SERVICES', list()):
- cn = name.lower()
- app.all_services.append(Service(cn, name, url))
+ app.register_blueprint(default.bp)
+ app.register_blueprint(login.bp)
+ app.register_blueprint(admin.bp, url_prefix='/admin')
+ app.session_interface = EncryptedSessionInterface()
-app.user_backend = get_backend(app.config['USER_BACKEND'], app)
-app.mail_backend = get_backend(app.config['MAIL_BACKEND'], app)
+ app.user_backend = get_backend(app.config['USER_BACKEND'], app)
+ app.mail_backend = get_backend(app.config['MAIL_BACKEND'], app)
-app.username_blacklist = list()
-if app.config.get('USERNAME_BLACKLIST_FILE'):
- with open(app.config['USERNAME_BLACKLIST_FILE']) as f:
- app.username_blacklist = f.read().split('\n')
+ app.all_services = list()
+ for (name, url) in app.config.get('SERVICES', list()):
+ cn = name.lower()
+ app.all_services.append(Service(cn, name, url))
-login_manager = create_login_manager()
-login_manager.init_app(app)
+ app.username_blacklist = list()
+ if app.config.get('USERNAME_BLACKLIST_FILE'):
+ with open(app.config['USERNAME_BLACKLIST_FILE']) as f:
+ app.username_blacklist = f.read().split('\n')
+
+ login_manager = create_login_manager()
+ login_manager.init_app(app)
+
+ return app
diff --git a/app.wsgi b/app.wsgi
new file mode 100644
index 0000000..cd133e4
--- /dev/null
+++ b/app.wsgi
@@ -0,0 +1,3 @@
+from accounts import create_app
+
+app = create_app()
diff --git a/manage.py b/manage.py
index 699888a..cb65d10 100755
--- a/manage.py
+++ b/manage.py
@@ -2,7 +2,7 @@
from flask import current_app
from flask.ext.script import Command, Manager, Server, Shell, Option
-from accounts import app
+from accounts import create_app
from accounts.utils.console import TablePrinter
@@ -44,7 +44,7 @@ class ListUsers(Command):
def main():
- manager = Manager(app)
+ manager = Manager(create_app)
manager.add_command(
'runserver', Server(host='::', use_debugger=False))
manager.add_command(