Skip to content

Commit 71f9afb

Browse files
committed
Minor fix in sessions backend (remove pk from Session.expire_date)
1 parent 962ce95 commit 71f9afb

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

django_cassandra_engine/sessions/backends/db.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
from datetime import datetime
2+
import logging
3+
14
from django.contrib.sessions.backends.db import (
25
SessionStore as DjangoSessionStore
36
)
7+
from django.core.exceptions import SuspiciousOperation
8+
from django.utils.encoding import force_text
49
from django.utils.functional import cached_property
510
from django.contrib.sessions.backends import db
611

@@ -36,6 +41,21 @@ def create_model_instance(self, data):
3641
expire_date=self.get_expiry_date(),
3742
)
3843

44+
def load(self):
45+
try:
46+
s = self.model.objects.get(session_key=self.session_key)
47+
if s.expire_date <= datetime.now():
48+
s.delete()
49+
raise SuspiciousOperation('old session detected')
50+
return self.decode(s.session_data)
51+
except (self.model.DoesNotExist, SuspiciousOperation) as e:
52+
if isinstance(e, SuspiciousOperation):
53+
logger = logging.getLogger('django.security.%s' %
54+
e.__class__.__name__)
55+
logger.warning(force_text(e))
56+
self.create()
57+
return {}
58+
3959
def exists(self, session_key):
4060
try:
4161
self.model.objects.get(session_key=session_key)

django_cassandra_engine/sessions/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ class AbstractBaseSession(Model):
66
__abstract__ = True
77

88
session_key = columns.Text(primary_key=True, max_length=40)
9-
expire_date = columns.DateTime(primary_key=True, clustering_order='DESC')
9+
expire_date = columns.DateTime()
1010

1111
session_data = columns.Text()
1212

0 commit comments

Comments
 (0)