web/lib/django/db/__init__.py
changeset 38 77b6da96e6f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/lib/django/db/__init__.py	Wed Jun 02 18:57:35 2010 +0200
@@ -0,0 +1,101 @@
+from django.conf import settings
+from django.core import signals
+from django.core.exceptions import ImproperlyConfigured
+from django.db.utils import ConnectionHandler, ConnectionRouter, load_backend, DEFAULT_DB_ALIAS, \
+                            DatabaseError, IntegrityError
+from django.utils.functional import curry
+
+__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
+    'IntegrityError', 'DEFAULT_DB_ALIAS')
+
+
+# For backwards compatibility - Port any old database settings over to
+# the new values.
+if not settings.DATABASES:
+    import warnings
+    warnings.warn(
+        "settings.DATABASE_* is deprecated; use settings.DATABASES instead.",
+        PendingDeprecationWarning
+    )
+
+    settings.DATABASES[DEFAULT_DB_ALIAS] = {
+        'ENGINE': settings.DATABASE_ENGINE,
+        'HOST': settings.DATABASE_HOST,
+        'NAME': settings.DATABASE_NAME,
+        'OPTIONS': settings.DATABASE_OPTIONS,
+        'PASSWORD': settings.DATABASE_PASSWORD,
+        'PORT': settings.DATABASE_PORT,
+        'USER': settings.DATABASE_USER,
+        'TEST_CHARSET': settings.TEST_DATABASE_CHARSET,
+        'TEST_COLLATION': settings.TEST_DATABASE_COLLATION,
+        'TEST_NAME': settings.TEST_DATABASE_NAME,
+    }
+
+if DEFAULT_DB_ALIAS not in settings.DATABASES:
+    raise ImproperlyConfigured("You must default a '%s' database" % DEFAULT_DB_ALIAS)
+
+for alias, database in settings.DATABASES.items():
+    if database['ENGINE'] in ("postgresql", "postgresql_psycopg2", "sqlite3", "mysql", "oracle"):
+        import warnings
+        if 'django.contrib.gis' in settings.INSTALLED_APPS:
+            warnings.warn(
+                "django.contrib.gis is now implemented as a full database backend. "
+                "Modify ENGINE in the %s database configuration to select "
+                "a backend from 'django.contrib.gis.db.backends'" % alias,
+                PendingDeprecationWarning
+            )
+            if database['ENGINE'] == 'postgresql_psycopg2':
+                full_engine = 'django.contrib.gis.db.backends.postgis'
+            elif database['ENGINE'] == 'sqlite3':
+                full_engine = 'django.contrib.gis.db.backends.spatialite'
+            else:
+                full_engine = 'django.contrib.gis.db.backends.%s' % database['ENGINE']
+        else:
+            warnings.warn(
+                "Short names for ENGINE in database configurations are deprecated. "
+                "Prepend %s.ENGINE with 'django.db.backends.'" % alias,
+                PendingDeprecationWarning
+            )
+            full_engine = "django.db.backends.%s" % database['ENGINE']
+        database['ENGINE'] = full_engine
+
+connections = ConnectionHandler(settings.DATABASES)
+
+router = ConnectionRouter(settings.DATABASE_ROUTERS)
+
+# `connection`, `DatabaseError` and `IntegrityError` are convenient aliases
+# for backend bits.
+
+# DatabaseWrapper.__init__() takes a dictionary, not a settings module, so
+# we manually create the dictionary from the settings, passing only the
+# settings that the database backends care about. Note that TIME_ZONE is used
+# by the PostgreSQL backends.
+# we load all these up for backwards compatibility, you should use
+# connections['default'] instead.
+connection = connections[DEFAULT_DB_ALIAS]
+backend = load_backend(connection.settings_dict['ENGINE'])
+
+# Register an event that closes the database connection
+# when a Django request is finished.
+def close_connection(**kwargs):
+    for conn in connections.all():
+        conn.close()
+signals.request_finished.connect(close_connection)
+
+# Register an event that resets connection.queries
+# when a Django request is started.
+def reset_queries(**kwargs):
+    for conn in connections.all():
+        conn.queries = []
+signals.request_started.connect(reset_queries)
+
+# Register an event that rolls back the connections
+# when a Django request has an exception.
+def _rollback_on_exception(**kwargs):
+    from django.db import transaction
+    for conn in connections:
+        try:
+            transaction.rollback_unless_managed(using=conn)
+        except DatabaseError:
+            pass
+signals.got_request_exception.connect(_rollback_on_exception)