Kaydet (Commit) 962defed authored tarafından Russell Keith-Magee's avatar Russell Keith-Magee

Fixed #13200 -- Updated the DB session backend to make full use of routers,…

Fixed #13200 -- Updated the DB session backend to make full use of routers, deprecating the need for the SESSION_DB_ALIAS setting. Thanks to rokclimb15 for the report.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12844 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst c62c47e6
...@@ -3,7 +3,7 @@ from django.conf import settings ...@@ -3,7 +3,7 @@ from django.conf import settings
from django.contrib.sessions.models import Session from django.contrib.sessions.models import Session
from django.contrib.sessions.backends.base import SessionBase, CreateError from django.contrib.sessions.backends.base import SessionBase, CreateError
from django.core.exceptions import SuspiciousOperation from django.core.exceptions import SuspiciousOperation
from django.db import IntegrityError, transaction, DEFAULT_DB_ALIAS from django.db import IntegrityError, transaction, router
from django.utils.encoding import force_unicode from django.utils.encoding import force_unicode
class SessionStore(SessionBase): class SessionStore(SessionBase):
...@@ -11,7 +11,6 @@ class SessionStore(SessionBase): ...@@ -11,7 +11,6 @@ class SessionStore(SessionBase):
Implements database session store. Implements database session store.
""" """
def __init__(self, session_key=None): def __init__(self, session_key=None):
self.using = getattr(settings, "SESSION_DB_ALIAS", DEFAULT_DB_ALIAS)
super(SessionStore, self).__init__(session_key) super(SessionStore, self).__init__(session_key)
def load(self): def load(self):
...@@ -58,12 +57,13 @@ class SessionStore(SessionBase): ...@@ -58,12 +57,13 @@ class SessionStore(SessionBase):
session_data = self.encode(self._get_session(no_load=must_create)), session_data = self.encode(self._get_session(no_load=must_create)),
expire_date = self.get_expiry_date() expire_date = self.get_expiry_date()
) )
sid = transaction.savepoint(using=self.using) using = router.db_for_write(Session, instance=obj)
sid = transaction.savepoint(using=using)
try: try:
obj.save(force_insert=must_create) obj.save(force_insert=must_create, using=using)
except IntegrityError: except IntegrityError:
if must_create: if must_create:
transaction.savepoint_rollback(sid, using=self.using) transaction.savepoint_rollback(sid, using=using)
raise CreateError raise CreateError
raise raise
......
...@@ -1299,18 +1299,6 @@ See the :ref:`topics-http-sessions`. ...@@ -1299,18 +1299,6 @@ See the :ref:`topics-http-sessions`.
.. setting:: SESSION_EXPIRE_AT_BROWSER_CLOSE .. setting:: SESSION_EXPIRE_AT_BROWSER_CLOSE
SESSION_DB_ALIAS
----------------
.. versionadded:: 1.2
Default: ``None``
If you're using database-backed session storage, this selects the database
alias that will be used to store session data. By default, Django will use
the ``default`` database, but you can store session data on any database
you choose.
SESSION_EXPIRE_AT_BROWSER_CLOSE SESSION_EXPIRE_AT_BROWSER_CLOSE
------------------------------- -------------------------------
......
...@@ -44,16 +44,9 @@ Using database-backed sessions ...@@ -44,16 +44,9 @@ Using database-backed sessions
If you want to use a database-backed session, you need to add If you want to use a database-backed session, you need to add
``'django.contrib.sessions'`` to your ``INSTALLED_APPS`` setting. ``'django.contrib.sessions'`` to your ``INSTALLED_APPS`` setting.
If you want to store your session data on a database other than ``default``
alias, you should set the :setting:`SESSION_DB_ALIAS` setting.
Once you have configured your installation, run ``manage.py syncdb`` Once you have configured your installation, run ``manage.py syncdb``
to install the single database table that stores session data. to install the single database table that stores session data.
.. versionadded:: 1.2
The :setting:`SESSION_DB_ALIAS` setting was added in Django 1.2. It
is not required in earlier versions.
Using cached sessions Using cached sessions
--------------------- ---------------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment