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

Commit 98e03c0

Browse files
Merge pull request #35 from vmax/mlab-mongodb
Add mLab MongoDB; complain about several mongo installations
2 parents 1962cbb + 0119ae0 commit 98e03c0

File tree

1 file changed

+19
-15
lines changed

1 file changed

+19
-15
lines changed

flask_heroku.py

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#!/usr/bin/env python
22

3+
from logging import getLogger
34
from os import environ
45
try:
56
from urllib.parse import urlparse
67
except ImportError:
78
from urlparse import urlparse
89

10+
logger = getLogger(__name__)
911

1012
class Heroku(object):
1113
"""Heroku configurations for flask."""
@@ -83,28 +85,30 @@ def init_app(self, app):
8385
app.config.setdefault('REDIS_PORT', url.port)
8486
app.config.setdefault('REDIS_PASSWORD', url.password)
8587

86-
# Mongolab
87-
mongolab_uri = environ.get('MONGOLAB_URI')
88-
if mongolab_uri:
89-
url = urlparse(mongolab_uri)
90-
app.config.setdefault('MONGO_URI', mongolab_uri)
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)
91100
app.config.setdefault('MONGODB_USER', url.username)
92101
app.config.setdefault('MONGODB_USERNAME', url.username)
93102
app.config.setdefault('MONGODB_PASSWORD', url.password)
94103
app.config.setdefault('MONGODB_HOST', url.hostname)
95104
app.config.setdefault('MONGODB_PORT', url.port)
96105
app.config.setdefault('MONGODB_DB', url.path[1:])
97106

98-
# MongoHQ
99-
mongohq_uri = environ.get('MONGOHQ_URL')
100-
if mongohq_uri:
101-
url = urlparse(mongohq_uri)
102-
app.config.setdefault('MONGO_URI', mongohq_uri)
103-
app.config.setdefault('MONGODB_USER', url.username)
104-
app.config.setdefault('MONGODB_PASSWORD', url.password)
105-
app.config.setdefault('MONGODB_HOST', url.hostname)
106-
app.config.setdefault('MONGODB_PORT', url.port)
107-
app.config.setdefault('MONGODB_DB', url.path[1:])
107+
elif len(defined_mongo_addons) > 1:
108+
logger.error(
109+
'Multiple MongoDB addons enabled. Flask-Heroku cannot '
110+
'determine which to use.')
111+
108112

109113
# Cloudant
110114
cloudant_uri = environ.get('CLOUDANT_URL')

0 commit comments

Comments
 (0)