Source code for invenio_config.env
# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2015-2018 CERN.
#
# Invenio is free software; you can redistribute it and/or modify it
# under the terms of the MIT License; see LICENSE file for more details.
"""Invenio environment configuration."""
from __future__ import absolute_import, print_function
import ast
import os
[docs]class InvenioConfigEnvironment(object):
"""Load configuration from environment variables.
.. versionadded:: 1.0.0
"""
def __init__(self, app=None, prefix='INVENIO_'):
"""Initialize extension."""
self.prefix = prefix
if app:
self.init_app(app)
[docs] def init_app(self, app):
"""Initialize Flask application."""
prefix_len = len(self.prefix)
for varname, value in os.environ.items():
if not varname.startswith(self.prefix):
continue
# Prepare values
varname = varname[prefix_len:]
value = value or app.config.get(varname)
# Evaluate value
try:
value = ast.literal_eval(value)
except (SyntaxError, ValueError):
pass
# Set value
app.config[varname] = value