Loading django/contrib/sessions/backends/base.py +5 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class SessionBase(object): TEST_COOKIE_NAME = 'testcookie' TEST_COOKIE_VALUE = 'worked' __not_given = object() def __init__(self, session_key=None): self._session_key = session_key self.accessed = False Loading @@ -58,9 +60,10 @@ class SessionBase(object): def get(self, key, default=None): return self._session.get(key, default) def pop(self, key, default=None): def pop(self, key, default=__not_given): self.modified = self.modified or key in self._session return self._session.pop(key, default) args = () if default is self.__not_given else (default,) return self._session.pop(key, *args) def setdefault(self, key, value): if key in self._session: Loading docs/releases/1.9.6.txt +3 −0 Original line number Diff line number Diff line Loading @@ -18,3 +18,6 @@ Bugfixes * Prevented ``makemigrations`` from generating infinite migrations for a model field that references a ``functools.partial`` (:ticket:`26475`). * Fixed a regression where ``SessionBase.pop()`` returned ``None`` rather than raising a ``KeyError`` for nonexistent values (:ticket:`26520`). docs/topics/http/sessions.txt +1 −1 Original line number Diff line number Diff line Loading @@ -205,7 +205,7 @@ You can edit it multiple times. Example: ``fav_color = request.session.get('fav_color', 'red')`` .. method:: pop(key, default=None) .. method:: pop(key, default=__not_given) Example: ``fav_color = request.session.pop('fav_color', 'blue')`` Loading tests/sessions_tests/tests.py +4 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,10 @@ class SessionTestsMixin(object): self.assertTrue(self.session.accessed) self.assertFalse(self.session.modified) def test_pop_no_default_keyerror_raised(self): with self.assertRaises(KeyError): self.session.pop('some key') def test_setdefault(self): self.assertEqual(self.session.setdefault('foo', 'bar'), 'bar') self.assertEqual(self.session.setdefault('foo', 'baz'), 'bar') Loading Loading
django/contrib/sessions/backends/base.py +5 −2 Original line number Diff line number Diff line Loading @@ -35,6 +35,8 @@ class SessionBase(object): TEST_COOKIE_NAME = 'testcookie' TEST_COOKIE_VALUE = 'worked' __not_given = object() def __init__(self, session_key=None): self._session_key = session_key self.accessed = False Loading @@ -58,9 +60,10 @@ class SessionBase(object): def get(self, key, default=None): return self._session.get(key, default) def pop(self, key, default=None): def pop(self, key, default=__not_given): self.modified = self.modified or key in self._session return self._session.pop(key, default) args = () if default is self.__not_given else (default,) return self._session.pop(key, *args) def setdefault(self, key, value): if key in self._session: Loading
docs/releases/1.9.6.txt +3 −0 Original line number Diff line number Diff line Loading @@ -18,3 +18,6 @@ Bugfixes * Prevented ``makemigrations`` from generating infinite migrations for a model field that references a ``functools.partial`` (:ticket:`26475`). * Fixed a regression where ``SessionBase.pop()`` returned ``None`` rather than raising a ``KeyError`` for nonexistent values (:ticket:`26520`).
docs/topics/http/sessions.txt +1 −1 Original line number Diff line number Diff line Loading @@ -205,7 +205,7 @@ You can edit it multiple times. Example: ``fav_color = request.session.get('fav_color', 'red')`` .. method:: pop(key, default=None) .. method:: pop(key, default=__not_given) Example: ``fav_color = request.session.pop('fav_color', 'blue')`` Loading
tests/sessions_tests/tests.py +4 −0 Original line number Diff line number Diff line Loading @@ -87,6 +87,10 @@ class SessionTestsMixin(object): self.assertTrue(self.session.accessed) self.assertFalse(self.session.modified) def test_pop_no_default_keyerror_raised(self): with self.assertRaises(KeyError): self.session.pop('some key') def test_setdefault(self): self.assertEqual(self.session.setdefault('foo', 'bar'), 'bar') self.assertEqual(self.session.setdefault('foo', 'baz'), 'bar') Loading