Source code for config
import os
from dotenv import load_dotenv
[docs]
def init_config(app):
"""
Configuration reference: <https://flask.palletsprojects.com/en/stable/config/>
"""
app_env = os.getenv('APP_ENV', 'development')
log_level = os.getenv('LOG_LEVEL', None)
timing = os.getenv('TIME')
# Load .env file from local directory, except in test mode
if app_env != 'test':
load_dotenv('.env')
# Load env variables starting with "MGROWTHDB_" into the config
app.config.from_prefixed_env('MGROWTHDB')
# 200MiB max size
app.config['MAX_CONTENT_LENGTH'] = 200 * 1024 * 1024
if app_env == 'development':
app.config.update(
DEBUG=True,
ASSETS_DEBUG=False,
SQLALCHEMY_RECORD_QUERIES=False,
TEMPLATES_AUTO_RELOAD=True,
EXPLAIN_TEMPLATE_LOADING=False,
)
elif app_env == 'test':
app.config.update(
DEBUG=False,
ASSETS_DEBUG=False,
TEMPLATES_AUTO_RELOAD=False,
EXPLAIN_TEMPLATE_LOADING=False,
WTF_CSRF_ENABLED=False,
SECRET_KEY='testing_key',
SERVER_NAME='',
PREFERRED_URL_SCHEME='http://',
)
elif app_env == 'production':
app.config.update(
DEBUG=False,
ASSETS_DEBUG=False,
TEMPLATES_AUTO_RELOAD=False,
EXPLAIN_TEMPLATE_LOADING=True,
SESSION_COOKIE_SECURE=True,
)
else:
raise KeyError(f"Unknown APP_ENV: {app_env}")
if log_level:
app.logger.setLevel(log_level.upper())
if timing:
app.logger.getChild('timing').setLevel('INFO')
return app