mirror of https://github.com/mitsuhiko/flask.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.2 KiB
43 lines
1.2 KiB
# -*- coding: utf-8 -*- |
|
""" |
|
flask.session |
|
~~~~~~~~~~~~~ |
|
|
|
Implements cookie based sessions based on Werkzeug's secure cookie |
|
system. |
|
|
|
:copyright: (c) 2010 by Armin Ronacher. |
|
:license: BSD, see LICENSE for more details. |
|
""" |
|
|
|
from werkzeug.contrib.securecookie import SecureCookie |
|
|
|
|
|
class Session(SecureCookie): |
|
"""Expands the session with support for switching between permanent |
|
and non-permanent sessions. |
|
""" |
|
|
|
def _get_permanent(self): |
|
return self.get('_permanent', False) |
|
|
|
def _set_permanent(self, value): |
|
self['_permanent'] = bool(value) |
|
|
|
permanent = property(_get_permanent, _set_permanent) |
|
del _get_permanent, _set_permanent |
|
|
|
|
|
class _NullSession(Session): |
|
"""Class used to generate nicer error messages if sessions are not |
|
available. Will still allow read-only access to the empty session |
|
but fail on setting. |
|
""" |
|
|
|
def _fail(self, *args, **kwargs): |
|
raise RuntimeError('the session is unavailable because no secret ' |
|
'key was set. Set the secret_key on the ' |
|
'application to something unique and secret.') |
|
__setitem__ = __delitem__ = clear = pop = popitem = \ |
|
update = setdefault = _fail |
|
del _fail
|
|
|