@@ -254,24 +254,30 @@ def _register_test_connection(port, db_alias, preserved):
254254 return _conn
255255
256256
257- def _resolve_settings (settings , remove_pass = True ):
257+ def _resolve_settings (settings , settings_prefix = None , remove_pass = True ):
258258
259259 if settings and isinstance (settings , dict ):
260260 resolved_settings = dict ()
261261 for k , v in settings .items ():
262- if k .startswith ("MONGODB_" ):
263- resolved_settings [k [8 :].lower ()] = v
262+ if settings_prefix > 0 :
263+ # Only resolve parameters that contain the prefix, ignoring the rest.
264+ if k .startswith (settings_prefix ):
265+ resolved_settings [k [len (settings_prefix ):].lower ()] = v
264266 else :
267+ # If no prefix is provided then we assume that all parameters are relevant for the DB connection string.
265268 resolved_settings [k .lower ()] = v
266269
267- resolved_settings ['alias' ] = resolved_settings .get ('alias' , DEFAULT_CONNECTION_NAME )
270+ # Add various default values.
271+ resolved_settings ['alias' ] = resolved_settings .get ('alias' , DEFAULT_CONNECTION_NAME )
268272 if (resolved_settings .has_key ('db' )):
269273 resolved_settings ['name' ] = resolved_settings .pop ('db' )
270274 else :
271275 resolved_settings ['name' ] = 'test'
276+
272277 resolved_settings ['host' ] = resolved_settings .get ('host' , 'localhost' )
273278 resolved_settings ['port' ] = resolved_settings .get ('port' , 27017 )
274279 resolved_settings ['username' ] = resolved_settings .get ('username' , None )
280+
275281 # default to ReadPreference.PRIMARY if no read_preference is supplied
276282 resolved_settings ['read_preference' ] = resolved_settings .get ('read_preference' , ReadPreference .PRIMARY )
277283 if 'replicaset' in resolved_settings :
@@ -284,6 +290,7 @@ def _resolve_settings(settings, remove_pass=True):
284290 pass
285291
286292 return resolved_settings
293+
287294 return settings
288295
289296
@@ -315,14 +322,14 @@ def fetch_connection_settings(config, remove_pass=True):
315322 # List of connection settings.
316323 settings_list = []
317324 for setting in settings :
318- settings_list .append (_resolve_settings (setting , remove_pass ))
325+ settings_list .append (_resolve_settings (setting , remove_pass = remove_pass ))
319326 return settings_list
320327 else :
321328 # Connection settings provided as a dictionary.
322- return _resolve_settings (settings , remove_pass )
329+ return _resolve_settings (settings , remove_pass = remove_pass )
323330 else :
324331 # Connection settings provided in standard format.
325- return _resolve_settings (config , remove_pass )
332+ return _resolve_settings (config , settings_prefix = 'MONGODB_' , remove_pass = remove_pass )
326333
327334
328335def create_connection (config , app ):
0 commit comments