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
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('localhosted'):
  logger.info('Running with debug config on production data.')
  config = LocalHostedConfig()
else:
  logger.info('Running with debug config.')
  config = DebugConfig()

app.config.from_object(config)

Principal(app, use_sessions=True)

login_manager = LoginManager()
login_manager.init_app(app)

mail = Mail()
mail.init_app(app)

stripe.api_key = app.config['STRIPE_SECRET_KEY']

mixpanel = analytics.init_app(app)