web/lib/django/contrib/sessions/backends/db.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
--- a/web/lib/django/contrib/sessions/backends/db.py	Wed May 19 17:43:59 2010 +0200
+++ b/web/lib/django/contrib/sessions/backends/db.py	Tue May 25 02:43:45 2010 +0200
@@ -1,14 +1,18 @@
 import datetime
+from django.conf import settings
 from django.contrib.sessions.models import Session
 from django.contrib.sessions.backends.base import SessionBase, CreateError
 from django.core.exceptions import SuspiciousOperation
-from django.db import IntegrityError, transaction
+from django.db import IntegrityError, transaction, router
 from django.utils.encoding import force_unicode
 
 class SessionStore(SessionBase):
     """
     Implements database session store.
     """
+    def __init__(self, session_key=None):
+        super(SessionStore, self).__init__(session_key)
+
     def load(self):
         try:
             s = Session.objects.get(
@@ -53,12 +57,13 @@
             session_data = self.encode(self._get_session(no_load=must_create)),
             expire_date = self.get_expiry_date()
         )
-        sid = transaction.savepoint()
+        using = router.db_for_write(Session, instance=obj)
+        sid = transaction.savepoint(using=using)
         try:
-            obj.save(force_insert=must_create)
+            obj.save(force_insert=must_create, using=using)
         except IntegrityError:
             if must_create:
-                transaction.savepoint_rollback(sid)
+                transaction.savepoint_rollback(sid, using=using)
                 raise CreateError
             raise