Examples

Basic Flask Example

app/__init__.py:

from ordbok.flask_helper import FlaskOrdbok

ordbok = FlaskOrdbok()

def create_app():
    app = Flask(__name__)
    ordbok.init_app(app)
    ordbok.load()
    app.config.update(ordbok)
    return app

if __name__ == "__main__":
    app = create_app()
    ordbok.app_run(app)

app/config/config.yml:

COMMON: &common
  SECRET_KEY: 'keep out!'
  DEBUG: False

DEVELOPMENT: &development
  <<: *common
  DEBUG: True
  SQLALCHEMY_DATABASE_URL: 'ordbok_local_config'

PRODUCTION:
  <<: *common
  SECRET_KEY: 'ordbok_env_config'
  SQLALCHEMY_DATABASE_URL: 'postgres://user:password@localhost:5432/database'

app/config/local_config.yml:

SQLALCHEMY_DATABASE_URL: 'sqlite:///tmp/database.db'
SQLALCHEMY_ECHO: True

ran with python app/__init__.py will run a Flask app with the following configuration*:

{ENVIRONMENT: 'development',
 SECRET_KEY: 'keep out!',
 DEBUG: True,
 SQLALCHEMY_DATABASE_URL: 'sqlite:///tmp/database.db',
 SQLALCHEMY_ECHO: True}

and ran with (in bash):

export ORDBOK_ENVIRONMENT=PRODUCTION
export ORDBOK_SECRET_KEY=7a1fa63d-f33a-11e3-aab5-b88d12179d58
python app/__init__.py

will run a Flask app with the following configuration*:

{ENVIRONMENT: 'production',
 SECRET_KEY: '7a1fa63d-f33a-11e3-aab5-b88d12179d58',
 DEBUG: False,
 SQLALCHEMY_DATABASE_URL: 'postgres://user:password@localhost:5432/database'}

*Note: These are not complete configurations; Flask adds a set of defaults on it's own. These only represent the values set from the config files and the environment.

By setting SQLALCHEMY_DATABASE_URL: 'ordbok_local_config' and SECRET_KEY: 'ordbok_env' in our config/config.yml file, we would raise an exception if those values were not found in config/local_config.yml and the environment, respectively.