Fixed #4729 -- Restored functionality to the Session class so that popping a

value marks it as modified. This was accidentally lost in the changes in
[6333]. Thanks, __hawkeye__.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6558 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2007-10-20 10:12:59 +00:00
parent 4362d154fb
commit 4c0d8d882d
2 changed files with 24 additions and 0 deletions

View File

@ -48,6 +48,7 @@ class SessionBase(object):
return self._session.get(key, default) return self._session.get(key, default)
def pop(self, key, *args): def pop(self, key, *args):
self.modified = self.modified or key in self._session
return self._session.pop(key, *args) return self._session.pop(key, *args)
def set_test_cookie(self): def set_test_cookie(self):

View File

@ -3,6 +3,7 @@ r"""
>>> from django.contrib.sessions.backends.db import SessionStore as DatabaseSession >>> from django.contrib.sessions.backends.db import SessionStore as DatabaseSession
>>> from django.contrib.sessions.backends.cache import SessionStore as CacheSession >>> from django.contrib.sessions.backends.cache import SessionStore as CacheSession
>>> from django.contrib.sessions.backends.file import SessionStore as FileSession >>> from django.contrib.sessions.backends.file import SessionStore as FileSession
>>> from django.contrib.sessions.backends.base import SessionBase
>>> db_session = DatabaseSession() >>> db_session = DatabaseSession()
>>> db_session.modified >>> db_session.modified
@ -52,6 +53,28 @@ True
>>> cache_session.delete(cache_session.session_key) >>> cache_session.delete(cache_session.session_key)
>>> cache_session.exists(cache_session.session_key) >>> cache_session.exists(cache_session.session_key)
False False
>>> s = SessionBase()
>>> s._session['some key'] = 'exists' # Pre-populate the session with some data
>>> s.accessed = False # Reset to pretend this wasn't accessed previously
>>> s.accessed, s.modified
(False, False)
>>> s.pop('non existant key', 'does not exist')
'does not exist'
>>> s.accessed, s.modified
(True, False)
>>> s.accessed = False # Reset the accessed flag
>>> s.pop('some key')
'exists'
>>> s.accessed, s.modified
(True, True)
>>> s.pop('some key', 'does not exist')
'does not exist'
""" """
if __name__ == '__main__': if __name__ == '__main__':