Skip to content
Browse files

PERMANENT_SESSION_LIFETIME can now be an integer. This fixes #310

  • Loading branch information...
1 parent 6d0b326 commit 6dccf775468ea0a849d3c1c3965e3a1db6a36a3f @mitsuhiko committed
Showing with 35 additions and 9 deletions.
  1. +7 −0 docs/api.rst
  2. +2 −0 docs/config.rst
  3. +26 −9 flask/app.py
View
7 docs/api.rst
@@ -217,6 +217,13 @@ implementation that Flask is using.
.. autoclass:: SessionMixin
:members:
+.. admonition:: Notice
+
+ The ``PERMANENT_SESSION_LIFETIME`` config key can also be an integer
+ starting with Flask 0.8. Either catch this down yourself or use
+ the :attr:`~flask.Flask.permanent_session_lifetime` attribute on the
+ app which converts the result to an integer automatically.
+
Test Client
-----------
View
2 docs/config.rst
@@ -86,6 +86,8 @@ The following configuration values are used internally by Flask:
`False`.
``PERMANENT_SESSION_LIFETIME`` the lifetime of a permanent session as
:class:`datetime.timedelta` object.
+ Starting with Flask 0.8 this can also be
+ an integer representing seconds.
``USE_X_SENDFILE`` enable/disable x-sendfile
``LOGGER_NAME`` the name of the logger
``SERVER_NAME`` the name and port number of the server.
View
35 flask/app.py
@@ -177,15 +177,6 @@ class Flask(_PackageBoundObject):
#: `SESSION_COOKIE_NAME` configuration key. Defaults to ``'session'``
session_cookie_name = ConfigAttribute('SESSION_COOKIE_NAME')
- #: A :class:`~datetime.timedelta` which is used to set the expiration
- #: date of a permanent session. The default is 31 days which makes a
- #: permanent session survive for roughly one month.
- #:
- #: This attribute can also be configured from the config with the
- #: `PERMANENT_SESSION_LIFETIME` configuration key. Defaults to
- #: ``timedelta(days=31)``
- permanent_session_lifetime = ConfigAttribute('PERMANENT_SESSION_LIFETIME')
-
#: Enable this if you want to use the X-Sendfile feature. Keep in
#: mind that the server has to support this. This only affects files
#: sent with the :func:`send_file` method.
@@ -495,6 +486,32 @@ def preserve_context_on_exception(self):
return rv
return self.debug
+ def _get_permanent_session_lifetime(self):
+ """A :class:`~datetime.timedelta` which is used to set the expiration
+ date of a permanent session. The default is 31 days which makes a
+ permanent session survive for roughly one month.
+
+ This attribute can also be configured from the config with the
+ `PERMANENT_SESSION_LIFETIME` configuration key. Defaults to
+ ``timedelta(days=31)``.
+
+ If you want to have this value as seconds you can use ``total_seconds()``::
+
+ app.permanent_session_lifetime.total_seconds()
+
+ Note that the config key can be a timedelta object or number of seconds
+ as integer since Flask 0.8.
+ """
+ rv = self.config['PERMANENT_SESSION_LIFETIME']
+ if not isinstance(rv, timedelta):
+ return timedelta(seconds=rv)
+ return rv
+ def _set_permanent_session_lifetime(self, value):
+ self.config['PERMANENT_SESSION_LIFETIME'] = value
+ permanent_session_lifetime = property(_get_permanent_session_lifetime,
+ _set_permanent_session_lifetime)
+ del _get_permanent_session_lifetime, _set_permanent_session_lifetime
+
@property
def logger(self):
"""A :class:`logging.Logger` object for this application. The

0 comments on commit 6dccf77

Please sign in to comment.
Something went wrong with that request. Please try again.