Skip to content
This repository was archived by the owner on Aug 26, 2021. It is now read-only.

Commit 0119ae0

Browse files
committed
Less obscure way to fix whether we have multiple Mongo addons
1 parent e2af331 commit 0119ae0

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

flask_heroku.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -85,28 +85,30 @@ def init_app(self, app):
8585
app.config.setdefault('REDIS_PORT', url.port)
8686
app.config.setdefault('REDIS_PASSWORD', url.password)
8787

88-
# Mongolab
89-
mongolab_uri = environ.get('MONGOLAB_URI')
90-
# MongoHQ
91-
mongohq_uri = environ.get('MONGOHQ_URL')
92-
# mLab MongoHQ
93-
mlab_mongo_uri = environ.get('MONGODB_URI')
94-
95-
if sum(1 for uri in (
96-
mongolab_uri, mongohq_uri, mlab_mongo_uri) if uri) > 1:
97-
logger.error('There are conflicting settings for Mongo')
98-
else:
99-
mongo_uri = mongolab_uri or mongohq_uri or mlab_mongo_uri
100-
101-
if mongo_uri:
102-
url = urlparse(mongo_uri)
103-
app.config.setdefault('MONGO_URI', mongo_uri)
104-
app.config.setdefault('MONGODB_USER', url.username)
105-
app.config.setdefault('MONGODB_USERNAME', url.username)
106-
app.config.setdefault('MONGODB_PASSWORD', url.password)
107-
app.config.setdefault('MONGODB_HOST', url.hostname)
108-
app.config.setdefault('MONGODB_PORT', url.port)
109-
app.config.setdefault('MONGODB_DB', url.path[1:])
88+
# Mongolab, MongoHQ and mLab MongoHQ
89+
mongo_addon_vars = {'MONGOLAB_URI', 'MONGOHQ_URL', 'MONGODB_URI'}
90+
defined_env_vars = set(environ.keys())
91+
92+
defined_mongo_addons = defined_env_vars & mongo_addon_vars
93+
94+
if len(defined_mongo_addons) == 1:
95+
mongo_addon_var = defined_mongo_addons.pop()
96+
mongo_uri = environ[mongo_addon_var]
97+
98+
url = urlparse(mongo_uri)
99+
app.config.setdefault('MONGO_URI', mongo_uri)
100+
app.config.setdefault('MONGODB_USER', url.username)
101+
app.config.setdefault('MONGODB_USERNAME', url.username)
102+
app.config.setdefault('MONGODB_PASSWORD', url.password)
103+
app.config.setdefault('MONGODB_HOST', url.hostname)
104+
app.config.setdefault('MONGODB_PORT', url.port)
105+
app.config.setdefault('MONGODB_DB', url.path[1:])
106+
107+
elif len(defined_mongo_addons) > 1:
108+
logger.error(
109+
'Multiple MongoDB addons enabled. Flask-Heroku cannot '
110+
'determine which to use.')
111+
110112

111113
# Cloudant
112114
cloudant_uri = environ.get('CLOUDANT_URL')

0 commit comments

Comments
 (0)