diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2016-02-02 03:40:33 +0100 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2016-02-02 04:44:07 +0100 |
commit | e1f0fca1991fcfd50836e0c8f8f9c0928854e8d1 (patch) | |
tree | 7a3991d6889da9cd3ec06296a73c04da499d93cf | |
parent | f530071cb4a90d98af2ff5eabf4584c060e9795a (diff) | |
download | web-e1f0fca1991fcfd50836e0c8f8f9c0928854e8d1.tar.gz web-e1f0fca1991fcfd50836e0c8f8f9c0928854e8d1.tar.bz2 web-e1f0fca1991fcfd50836e0c8f8f9c0928854e8d1.zip |
Fix relative file paths in the config
Relative file paths in the config should be relative to the directory
containing the config file itself.
-rw-r--r-- | accounts/__init__.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/accounts/__init__.py b/accounts/__init__.py index fabf0ec..08d52ba 100644 --- a/accounts/__init__.py +++ b/accounts/__init__.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +import os from flask import Flask, g, session from models import Service @@ -9,10 +10,26 @@ from utils.login import create_login_manager from views import default, login, admin +def absolute_paths(app, config): + def handle_option(dirname, name): + if app.config.get(name): + app.config[name] = os.path.join(dirname, app.config[name]) + + dirname = os.path.dirname(config) + handle_option(dirname, 'USERNAME_BLACKLIST_FILE') + + +def load_config(app, configfile): + if configfile is not None: + filename = os.path.join(app.root_path, configfile) + app.config.from_pyfile(filename) + absolute_paths(app, filename) + + def create_app(): app = Flask(__name__) app.config.from_object('accounts.default_settings') - app.config.from_envvar('SPLINE_ACCOUNT_WEB_SETTINGS', silent=True) + load_config(app, os.environ.get('SPLINE_ACCOUNT_WEB_SETTINGS')) app.register_blueprint(default.bp) app.register_blueprint(login.bp) |