From f48af8db3ba1d6ca8d4ad7328ed3805f2599492e Mon Sep 17 00:00:00 2001 From: Ross Lawley Date: Wed, 9 May 2012 12:00:05 +0100 Subject: [PATCH] Django 1.4 first session save lost data fixes #477 --- docs/changelog.rst | 1 + mongoengine/django/sessions.py | 2 +- tests/django_tests.py | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 030266a7..d93bf7bc 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -4,6 +4,7 @@ Changelog Changes in 0.6.X ================ +- Fixed Django 1.4 sessions first save data loss - FileField now automatically delete files on .delete() - Fix for GenericReference to_mongo method - Fixed connection regression diff --git a/mongoengine/django/sessions.py b/mongoengine/django/sessions.py index d1e9289a..f1783429 100644 --- a/mongoengine/django/sessions.py +++ b/mongoengine/django/sessions.py @@ -55,7 +55,7 @@ class SessionStore(SessionBase): def save(self, must_create=False): if self.session_key is None: - self.create() + self._session_key = self._get_new_session_key() s = MongoSession(session_key=self.session_key) s.session_data = self.encode(self._get_session(no_load=must_create)) s.expire_date = self.get_expiry_date() diff --git a/tests/django_tests.py b/tests/django_tests.py index 12ea1d12..f5e96249 100644 --- a/tests/django_tests.py +++ b/tests/django_tests.py @@ -103,3 +103,8 @@ class MongoDBSessionTest(SessionTestsMixin, unittest.TestCase): MongoSession.drop_collection() super(MongoDBSessionTest, self).setUp() + def test_first_save(self): + session = SessionStore() + session['test'] = True + session.save() + self.assertTrue('test' in session)