0002-sessions-allow-setting-an-explicit-expire-date-8887.patch
tests/test_sessions.py | ||
---|---|---|
60 | 60 |
assert 'Logout' in app.get('/') |
61 | 61 |
time.sleep(0.6) |
62 | 62 |
assert 'Logout' not in app.get('/') |
63 | ||
64 |
def test_session_expire(pub, user, app): |
|
65 |
login(app, username='foo', password='foo') |
|
66 |
assert 'Logout' in app.get('/') |
|
67 |
session = app.app.publisher.session_manager.session_class.select()[0] |
|
68 |
session.set_expire(time.time() + 10) |
|
69 |
session.store() |
|
70 |
assert 'Logout' in app.get('/') |
|
71 |
session.set_expire(time.time() - 1) |
|
72 |
session.store() |
|
73 |
assert 'Logout' not in app.get('/') |
wcs/qommon/sessions.py | ||
---|---|---|
81 | 81 |
tempfiles = None |
82 | 82 |
jsonp_display_values = None |
83 | 83 |
extra_variables = None |
84 |
expire = None |
|
84 | 85 | |
85 | 86 |
username = None # only set on password authentication |
86 | 87 | |
88 |
def set_expire(self, expire): |
|
89 |
self.expire = expire |
|
90 | ||
91 |
def set_duration(self, duration): |
|
92 |
self.set_expire(time.time() + duration) |
|
93 | ||
87 | 94 |
def is_expired(self): |
95 |
if self.expire: |
|
96 |
return time.time() >= self.expire |
|
88 | 97 |
duration = get_publisher().get_site_option('session_max_age') |
89 | 98 |
if duration is None: |
90 | 99 |
return False |
... | ... | |
105 | 114 |
self.jsonp_display_values or \ |
106 | 115 |
self.extra_variables or \ |
107 | 116 |
CaptchaSession.has_info(self) or \ |
117 |
self.expire or \ |
|
108 | 118 |
QuixoteSession.has_info(self) |
109 | 119 |
is_dirty = has_info |
110 | 120 | |
111 |
- |