@@ -85,28 +85,30 @@ def init_app(self, app):
85
85
app .config .setdefault ('REDIS_PORT' , url .port )
86
86
app .config .setdefault ('REDIS_PASSWORD' , url .password )
87
87
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
+
110
112
111
113
# Cloudant
112
114
cloudant_uri = environ .get ('CLOUDANT_URL' )
0 commit comments