Skip to content

Commit 143549c

Browse files
committed
CookieSession.save() should update expiration
1 parent 1b0aefc commit 143549c

File tree

3 files changed

+19
-29
lines changed

3 files changed

+19
-29
lines changed

beaker/session.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
weekdays = ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
1717

1818

19-
__all__ = ['SignedCookie', 'Session', 'InvalidSignature']
19+
__all__ = ['SignedCookie', 'Session', 'CookieSession', 'InvalidSignature']
2020

2121

2222
class _InvalidSignatureType(object):
@@ -697,11 +697,6 @@ def save(self, accessed_only=False):
697697
self.update(self.accessed_dict)
698698
self._create_cookie()
699699

700-
def expire(self):
701-
"""Delete the 'expires' attribute on this Session, if any."""
702-
703-
self.pop('_expires', None)
704-
705700
def _create_cookie(self):
706701
if '_creation_time' not in self:
707702
self['_creation_time'] = time.time()
@@ -715,14 +710,7 @@ def _create_cookie(self):
715710

716711
self.cookie[self.key] = val
717712

718-
if '_expires' in self:
719-
expires = self['_expires']
720-
else:
721-
expires = None
722-
expires = self._set_cookie_expires(expires)
723-
if expires is not None:
724-
self['_expires'] = expires
725-
713+
self._set_cookie_expires(None)
726714
if self.domain:
727715
self.cookie[self.key]['domain'] = self.domain
728716
if self.secure:

beaker/util.py

+2-14
Original file line numberDiff line numberDiff line change
@@ -462,23 +462,11 @@ def dumps(self, data):
462462

463463

464464
class JsonSerializer(object):
465-
DATETIME_PREFIX = "$DATETIME$"
466-
DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
467-
468465
def loads(self, data_string):
469-
loaded_data = json.loads(zlib.decompress(data_string).decode('utf-8'))
470-
for k, v in loaded_data.items():
471-
if isinstance(v, str) and v.startswith(self.DATETIME_PREFIX):
472-
v = v[len(self.DATETIME_PREFIX):]
473-
loaded_data[k] = datetime.strptime(v, self.DATETIME_FORMAT)
474-
return loaded_data
466+
return json.loads(zlib.decompress(data_string).decode('utf-8'))
475467

476468
def dumps(self, data):
477-
dumpable_data = data.copy()
478-
for k, v in dumpable_data.items():
479-
if isinstance(v, datetime):
480-
dumpable_data[k] = self.DATETIME_PREFIX + v.strftime(self.DATETIME_FORMAT)
481-
return zlib.compress(json.dumps(dumpable_data).encode('utf-8'))
469+
return zlib.compress(json.dumps(data).encode('utf-8'))
482470

483471

484472
def serialize(data, method):

tests/test_cookie_expires.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -101,5 +101,19 @@ def test_cookiesession_expires_values():
101101
{},
102102
**options,
103103
)
104+
# Check the cookie has expire
105+
# True = expire when browser is closed, so no Expire=
104106
cookie_session.save()
105-
cookie_session.save()
107+
if cookie_expires != True:
108+
assert "expires" in cookie_session.cookie.output()
109+
110+
# Check we can save it again.
111+
cookie_session.save()
112+
if cookie_expires != True:
113+
assert "expires" in cookie_session.cookie.output()
114+
115+
# Check we can load it back.
116+
loaded_back = CookieSession({"cookie": cookie_session.cookie}, **options)
117+
loaded_back.save()
118+
if cookie_expires != True:
119+
assert "expires" in cookie_session.cookie.output()

0 commit comments

Comments
 (0)