From 7c254c6136ef827f44bb9ced2261e14485c1c2e6 Mon Sep 17 00:00:00 2001 From: Joe Friedl Date: Fri, 4 Oct 2013 14:18:36 -0400 Subject: [PATCH] Use defaults when host and port are passed as None --- mongoengine/connection.py | 13 ++++++------- tests/test_connection.py | 8 ++++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/mongoengine/connection.py b/mongoengine/connection.py index 4275da53..7cc626f4 100644 --- a/mongoengine/connection.py +++ b/mongoengine/connection.py @@ -18,7 +18,7 @@ _connections = {} _dbs = {} -def register_connection(alias, name, host='localhost', port=27017, +def register_connection(alias, name, host=None, port=None, is_slave=False, read_preference=False, slaves=None, username=None, password=None, **kwargs): """Add a connection. @@ -43,8 +43,8 @@ def register_connection(alias, name, host='localhost', port=27017, conn_settings = { 'name': name, - 'host': host, - 'port': port, + 'host': host or 'localhost', + 'port': port or 27017, 'is_slave': is_slave, 'slaves': slaves or [], 'username': username, @@ -53,16 +53,15 @@ def register_connection(alias, name, host='localhost', port=27017, } # Handle uri style connections - if "://" in host: - uri_dict = uri_parser.parse_uri(host) + if "://" in conn_settings['host']: + uri_dict = uri_parser.parse_uri(conn_settings['host']) conn_settings.update({ - 'host': host, 'name': uri_dict.get('database') or name, 'username': uri_dict.get('username'), 'password': uri_dict.get('password'), 'read_preference': read_preference, }) - if "replicaSet" in host: + if "replicaSet" in conn_settings['host']: conn_settings['replicaSet'] = True conn_settings.update(kwargs) diff --git a/tests/test_connection.py b/tests/test_connection.py index 62d795c8..96135bc5 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -98,6 +98,14 @@ class ConnectionTest(unittest.TestCase): self.assertTrue(isinstance(db, pymongo.database.Database)) self.assertEqual(db.name, 'mongoenginetest2') + def test_register_connection_defaults(self): + """Ensure that defaults are used when the host and port are None. + """ + register_connection('testdb', 'mongoenginetest', host=None, port=None) + + conn = get_connection('testdb') + self.assertTrue(isinstance(conn, pymongo.mongo_client.MongoClient)) + def test_connection_kwargs(self): """Ensure that connection kwargs get passed to pymongo. """