Add support for Beaker >= 1.12.0
but still support previous versions too, for now
This commit is contained in:
parent
2b220459c7
commit
22176e89dd
4
setup.py
4
setup.py
|
@ -75,10 +75,6 @@ requires = [
|
||||||
# (still, probably a better idea is to refactor so we can use 0.9)
|
# (still, probably a better idea is to refactor so we can use 0.9)
|
||||||
'webhelpers2_grid==0.1', # 0.1
|
'webhelpers2_grid==0.1', # 0.1
|
||||||
|
|
||||||
# TODO: latest version breaks us totally! need to fix ASAP, but
|
|
||||||
# for the moment, must restrict version
|
|
||||||
'Beaker<1.12', # 1.11.0
|
|
||||||
|
|
||||||
# TODO: remove version cap once we can drop support for python 2.x
|
# TODO: remove version cap once we can drop support for python 2.x
|
||||||
'cornice<5.0', # 3.4.2 4.0.1
|
'cornice<5.0', # 3.4.2 4.0.1
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8; -*-
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2017 Lance Edgar
|
# Copyright © 2010-2022 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -30,7 +30,9 @@ pyramid_beaker projects.
|
||||||
from __future__ import unicode_literals, absolute_import
|
from __future__ import unicode_literals, absolute_import
|
||||||
|
|
||||||
import time
|
import time
|
||||||
|
from pkg_resources import parse_version
|
||||||
|
|
||||||
|
import beaker
|
||||||
from beaker.session import Session
|
from beaker.session import Session
|
||||||
from beaker.util import coerce_session_params
|
from beaker.util import coerce_session_params
|
||||||
from pyramid.settings import asbool
|
from pyramid.settings import asbool
|
||||||
|
@ -45,6 +47,10 @@ class TailboneSession(Session):
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
"Loads the data from this session from persistent storage"
|
"Loads the data from this session from persistent storage"
|
||||||
|
|
||||||
|
# are we using older version of beaker?
|
||||||
|
old_beaker = parse_version(beaker.__version__) < parse_version('1.12')
|
||||||
|
|
||||||
self.namespace = self.namespace_class(self.id,
|
self.namespace = self.namespace_class(self.id,
|
||||||
data_dir=self.data_dir,
|
data_dir=self.data_dir,
|
||||||
digest_filenames=False,
|
digest_filenames=False,
|
||||||
|
@ -60,8 +66,12 @@ class TailboneSession(Session):
|
||||||
try:
|
try:
|
||||||
session_data = self.namespace['session']
|
session_data = self.namespace['session']
|
||||||
|
|
||||||
|
if old_beaker:
|
||||||
if (session_data is not None and self.encrypt_key):
|
if (session_data is not None and self.encrypt_key):
|
||||||
session_data = self._decrypt_data(session_data)
|
session_data = self._decrypt_data(session_data)
|
||||||
|
else: # beaker >= 1.12
|
||||||
|
if session_data is not None:
|
||||||
|
session_data = self._decrypt_data(session_data)
|
||||||
|
|
||||||
# Memcached always returns a key, its None when its not
|
# Memcached always returns a key, its None when its not
|
||||||
# present
|
# present
|
||||||
|
@ -90,6 +100,7 @@ class TailboneSession(Session):
|
||||||
# for this module entirely...
|
# for this module entirely...
|
||||||
timeout = session_data.get('_timeout', self.timeout)
|
timeout = session_data.get('_timeout', self.timeout)
|
||||||
if timeout is not None and \
|
if timeout is not None and \
|
||||||
|
'_accessed_time' in session_data and \
|
||||||
now - session_data['_accessed_time'] > timeout:
|
now - session_data['_accessed_time'] > timeout:
|
||||||
timed_out = True
|
timed_out = True
|
||||||
else:
|
else:
|
||||||
|
@ -103,9 +114,6 @@ class TailboneSession(Session):
|
||||||
# Update the current _accessed_time
|
# Update the current _accessed_time
|
||||||
session_data['_accessed_time'] = now
|
session_data['_accessed_time'] = now
|
||||||
|
|
||||||
# Set the path if applicable
|
|
||||||
if '_path' in session_data:
|
|
||||||
self._path = session_data['_path']
|
|
||||||
self.update(session_data)
|
self.update(session_data)
|
||||||
self.accessed_dict = session_data.copy()
|
self.accessed_dict = session_data.copy()
|
||||||
finally:
|
finally:
|
||||||
|
|
Loading…
Reference in a new issue