--- 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