From e620d2f24b7332a26cd7359c5b88db15d6face1a Mon Sep 17 00:00:00 2001 From: TonySeek Date: Sat, 19 Jan 2013 22:03:20 +0800 Subject: [PATCH] Add init_app method. --- flask_heroku.py | 72 +++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/flask_heroku.py b/flask_heroku.py index 8236445..b9b630f 100644 --- a/flask_heroku.py +++ b/flask_heroku.py @@ -6,72 +6,74 @@ from os import environ class Heroku(object): """Heroku configurations for flask.""" - def __init__(self, app): - self.app = app + def __init__(self, app=None): + if app is not None: + self.init_app(app) + def init_app(self, app): # SQL-Alchemy - self.app.config.setdefault('SQLALCHEMY_DATABASE_URI', environ.get('DATABASE_URL')) + app.config.setdefault('SQLALCHEMY_DATABASE_URI', environ.get('DATABASE_URL')) # Sentry - self.app.config.setdefault('SENTRY_DSN', environ.get('SENTRY_DSN')) + app.config.setdefault('SENTRY_DSN', environ.get('SENTRY_DSN')) # Exceptional - self.app.config.setdefault('EXCEPTIONAL_API_KEY', environ.get('EXCEPTIONAL_API_KEY')) + app.config.setdefault('EXCEPTIONAL_API_KEY', environ.get('EXCEPTIONAL_API_KEY')) # Flask-GoogleFed - self.app.config.setdefault('GOOGLE_DOMAIN', environ.get('GOOGLE_DOMAIN')) + app.config.setdefault('GOOGLE_DOMAIN', environ.get('GOOGLE_DOMAIN')) # Celery w/ RabbitMQ - self.app.config.setdefault('BROKER_URL', environ.get('RABBITMQ_URL')) + app.config.setdefault('BROKER_URL', environ.get('RABBITMQ_URL')) # Mailgun if 'MAILGUN_SMTP_SERVER' in environ: - self.app.config.setdefault('SMTP_SERVER', environ.get('MAILGUN_SMTP_SERVER')) - self.app.config.setdefault('SMTP_LOGIN', environ.get('MAILGUN_SMTP_LOGIN')) - self.app.config.setdefault('SMTP_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD')) - self.app.config.setdefault('MAIL_SERVER', environ.get('MAILGUN_SMTP_SERVER')) - self.app.config.setdefault('MAIL_USERNAME', environ.get('MAILGUN_SMTP_LOGIN')) - self.app.config.setdefault('MAIL_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD')) - self.app.config.setdefault('MAIL_USE_TLS', True) + app.config.setdefault('SMTP_SERVER', environ.get('MAILGUN_SMTP_SERVER')) + app.config.setdefault('SMTP_LOGIN', environ.get('MAILGUN_SMTP_LOGIN')) + app.config.setdefault('SMTP_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD')) + app.config.setdefault('MAIL_SERVER', environ.get('MAILGUN_SMTP_SERVER')) + app.config.setdefault('MAIL_USERNAME', environ.get('MAILGUN_SMTP_LOGIN')) + app.config.setdefault('MAIL_PASSWORD', environ.get('MAILGUN_SMTP_PASSWORD')) + app.config.setdefault('MAIL_USE_TLS', True) # SendGrid elif 'SENDGRID_USERNAME' in environ: - self.app.config.setdefault('SMTP_SERVER', 'smtp.sendgrid.net') - self.app.config.setdefault('SMTP_LOGIN', environ.get('SENDGRID_USERNAME')) - self.app.config.setdefault('SMTP_PASSWORD', environ.get('SENDGRID_PASSWORD')) - self.app.config.setdefault('MAIL_SERVER', 'smtp.sendgrid.net') - self.app.config.setdefault('MAIL_USERNAME', environ.get('SENDGRID_USERNAME')) - self.app.config.setdefault('MAIL_PASSWORD', environ.get('SENDGRID_PASSWORD')) - self.app.config.setdefault('MAIL_USE_TLS', True) + app.config.setdefault('SMTP_SERVER', 'smtp.sendgrid.net') + app.config.setdefault('SMTP_LOGIN', environ.get('SENDGRID_USERNAME')) + app.config.setdefault('SMTP_PASSWORD', environ.get('SENDGRID_PASSWORD')) + app.config.setdefault('MAIL_SERVER', 'smtp.sendgrid.net') + app.config.setdefault('MAIL_USERNAME', environ.get('SENDGRID_USERNAME')) + app.config.setdefault('MAIL_PASSWORD', environ.get('SENDGRID_PASSWORD')) + app.config.setdefault('MAIL_USE_TLS', True) # Redis To Go redis_url = environ.get('REDISTOGO_URL') if redis_url: url = urlparse.urlparse(redis_url) - self.app.config.setdefault('REDIS_HOST', url.hostname) - self.app.config.setdefault('REDIS_PORT', url.port) - self.app.config.setdefault('REDIS_PASSWORD', url.password) + app.config.setdefault('REDIS_HOST', url.hostname) + app.config.setdefault('REDIS_PORT', url.port) + app.config.setdefault('REDIS_PASSWORD', url.password) # Mongolab mongolab_uri = environ.get('MONGOLAB_URI') if mongolab_uri: url = urlparse.urlparse(mongolab_uri) - self.app.config.setdefault('MONGODB_USER', url.username) - self.app.config.setdefault('MONGODB_PASSWORD', url.password) - self.app.config.setdefault('MONGODB_HOST', url.hostname) - self.app.config.setdefault('MONGODB_PORT', url.port) - self.app.config.setdefault('MONGODB_DB', url.path[1:]) + app.config.setdefault('MONGODB_USER', url.username) + app.config.setdefault('MONGODB_PASSWORD', url.password) + app.config.setdefault('MONGODB_HOST', url.hostname) + app.config.setdefault('MONGODB_PORT', url.port) + app.config.setdefault('MONGODB_DB', url.path[1:]) # MongoHQ mongohq_uri = environ.get('MONGOHQ_URL') if mongohq_uri: url = urlparse.urlparse(mongohq_uri) - self.app.config.setdefault('MONGODB_USER', url.username) - self.app.config.setdefault('MONGODB_PASSWORD', url.password) - self.app.config.setdefault('MONGODB_HOST', url.hostname) - self.app.config.setdefault('MONGODB_PORT', url.port) - self.app.config.setdefault('MONGODB_DB', url.path[1:]) + app.config.setdefault('MONGODB_USER', url.username) + app.config.setdefault('MONGODB_PASSWORD', url.password) + app.config.setdefault('MONGODB_HOST', url.hostname) + app.config.setdefault('MONGODB_PORT', url.port) + app.config.setdefault('MONGODB_DB', url.path[1:]) # Cloudant cloudant_uri = environ.get('CLOUDANT_URL') if cloudant_uri: - self.app.config.setdefault('COUCHDB_SERVER', cloudant_uri) + app.config.setdefault('COUCHDB_SERVER', cloudant_uri)