import logging import os import stripe from flask import Flask from flask.ext.principal import Principal from flask.ext.login import LoginManager from flask.ext.mail import Mail from config import (ProductionConfig, DebugConfig, LocalHostedConfig, TestConfig, StagingConfig) from util import analytics app = Flask(__name__) logger = logging.getLogger(__name__) stack = os.environ.get('STACK', '').strip().lower() if stack.startswith('prod'): logger.info('Running with production config.') config = ProductionConfig() elif stack.startswith('staging'): logger.info('Running with staging config on production data.') config = StagingConfig() elif stack.startswith('localhosted'): logger.info('Running with debug config on production data.') config = LocalHostedConfig() elif stack.startswith('test'): logger.info('Running with test config on ephemeral data.') config = TestConfig() else: logger.info('Running with debug config.') config = DebugConfig() app.config.from_object(config) Principal(app, use_sessions=False) login_manager = LoginManager() login_manager.init_app(app) mail = Mail() mail.init_app(app) stripe.api_key = app.config.get('STRIPE_SECRET_KEY', None) mixpanel = app.config['ANALYTICS'].init_app(app)