give option in connect_database_from_config to connect to a pymongo.Connection
authorChristopher Allan Webber <cwebber@dustycloud.org>
Mon, 11 Jul 2011 03:44:20 +0000 (22:44 -0500)
committerChristopher Allan Webber <cwebber@dustycloud.org>
Mon, 11 Jul 2011 03:44:20 +0000 (22:44 -0500)
mediagoblin/db/open.py

index cae3339404a17885ec6ecd48ecf745cd680bfc54..cb040c296bec4f0b5b0e08287982b286d8d169ac 100644 (file)
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import pymongo
 import mongokit
 from paste.deploy.converters import asint
 from mediagoblin.db import models
 
 
-def connect_database_from_config(app_config):
-    """Connect to the main database, take config from app_config"""
+def connect_database_from_config(app_config, use_pymongo=False):
+    """
+    Connect to the main database, take config from app_config
+
+    Optionally use pymongo instead of mongokit for the connection.
+    """
     port = app_config.get('db_port')
     if port:
         port = asint(port)
-    connection = mongokit.Connection(
-        app_config.get('db_host'), port)
+    
+    if use_pymongo:
+        connection = pymongo.Connection(
+            app_config.get('db_host'), port)
+    else:
+        connection = mongokit.Connection(
+            app_config.get('db_host'), port)
     return connection
 
-def setup_connection_and_db_from_config(app_config):
-    connection = connect_database_from_config(app_config)
+def setup_connection_and_db_from_config(app_config, use_pymongo=False):
+    """
+    Setup connection and database from config.
+
+    Optionally use pymongo instead of mongokit.
+    """
+    connection = connect_database_from_config(app_config, use_pymongo)
     database_path = app_config.get('db_name', 'mediagoblin')
     db = connection[database_path]
-    models.register_models(connection)
-    # Could configure indexes here on db
+
+    if not use_pymongo:
+        models.register_models(connection)
+
     return (connection, db)