From 4c45befaad280ec3b1b330a4787564081b8fac6f Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Mon, 7 Jun 2010 17:53:22 +0000 Subject: [PATCH] [soc2010/query-refactor] Implement a few methods to the point of tests actually running under mongodb (all failing of course). git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/query-refactor@13331 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/mongodb/base.py | 35 +++++++++++++++++++++++++++++- django/contrib/mongodb/creation.py | 20 +++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 django/contrib/mongodb/creation.py diff --git a/django/contrib/mongodb/base.py b/django/contrib/mongodb/base.py index 6a65e96031..17c5f28067 100644 --- a/django/contrib/mongodb/base.py +++ b/django/contrib/mongodb/base.py @@ -1,5 +1,38 @@ +from pymongo import Connection + from django.db.backends import BaseDatabaseWrapper +from django.db.backends.signals import connection_created +from django.contrib.mongodb.creation import DatabaseCreation + + +class DatabaseFeatures(object): + interprets_empty_strings_as_nulls = False + + +class DatabaseOperations(object): + def max_name_length(self): + return 254 + + def value_to_db_datetime(self, value): + return value class DatabaseWrapper(BaseDatabaseWrapper): - pass + def __init__(self, *args, **kwargs): + super(DatabaseWrapper, self).__init__(*args, **kwargs) + self.features = DatabaseFeatures() + self.ops = DatabaseOperations() + self.creation = DatabaseCreation(self) + self._connection = None + + @property + def connection(self): + if self._connection is None: + self._connection = Connection(self.settings_dict["HOST"], + self.settings_dict["PORT"] or None) + connection_created.send(sender=self.__class__) + return self._connection + + def _rollback(self): + # TODO: ??? + pass diff --git a/django/contrib/mongodb/creation.py b/django/contrib/mongodb/creation.py new file mode 100644 index 0000000000..9102d7f997 --- /dev/null +++ b/django/contrib/mongodb/creation.py @@ -0,0 +1,20 @@ +from django.db.backends.creation import TEST_DATABASE_PREFIX + + +class DatabaseCreation(object): + def __init__(self, connection): + self.connection = connection + + def create_test_db(self, verbosity, autoclobber): + if self.connection.settings_dict['TEST_NAME']: + test_database_name = self.connection.settings_dict['TEST_NAME'] + else: + test_database_name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME'] + self.connection.settings_dict["NAME"] = test_database_name + return test_database_name + + def destroy_test_db(self, old_database_name, verbosity=1): + if verbosity >= 1: + print "Destroying test database '%s'..." % self.connection.alias + self.connection.connection.drop_database(self.connection.settings_dict["NAME"]) + self.connection.settings_dict["NAME"] = old_database_name