From e1f0fca1991fcfd50836e0c8f8f9c0928854e8d1 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 2 Feb 2016 03:40:33 +0100 Subject: Fix relative file paths in the config Relative file paths in the config should be relative to the directory containing the config file itself. --- accounts/__init__.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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) -- cgit v1.2.3-1-g7c22