From 9267351c87f835566df6317c2e65b32cb65c2a25 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:04:30 -0300 Subject: [PATCH 01/23] Initial fork --- README | 15 -------------- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++ sessions/middleware.py | 18 +++++++++++------ setup.py | 38 ++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 21 deletions(-) delete mode 100644 README create mode 100644 README.md create mode 100644 setup.py diff --git a/README b/README deleted file mode 100644 index e3380c5..0000000 --- a/README +++ /dev/null @@ -1,15 +0,0 @@ -A Django middleware application to timeout a logged in user session after a specified time period. - -Installation instructions: -- Make sure the following Django apps/middlewares are enabled. - - Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) - - Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) - - Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) -- Place the checked out 'sessions' directory in your project. -- Make the following entries in your 'settings.py' project module. - - Append an entry to the MIDDLEWARE_CLASSES as 'sessions.middleware.SessionIdleTimeout', at the bottom. - - Add 'sessions' to INSTALLED_APPS. (Optional) - - Add a entry named 'SESSION_IDLE_TIMEOUT' to specify the idle timeout period, in seconds. - -That's it, you will receive a session timeout message using the Django message framework in your templates. - diff --git a/README.md b/README.md new file mode 100644 index 0000000..08f04ad --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +django-session-idle-timeout +=========================== + + + + +A Django middleware application to timeout a logged in user +session after a specified time period. + +Installation instructions: +- Make sure the following Django apps/middlewares are enabled. + - Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) + - Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) + - Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) + +- Install django-session-idle-timeout + + easy_install django-session-idle-timeout + +- Update the *settings.py* + + - Update the *MIDDLEWARE_CLASSES*. Add the + `sessions.middleware.SessionIdleTimeout` at the bottom. + + MIDDLEWARE_CLASSES = ( + ... + 'sessions.middleware.SessionIdleTimeout', + ) + + - Update the *INSTALLED_APPS*. Add 'sessions'. + - Add a new entry named 'SESSION_IDLE_TIMEOUT', and specify the idle + timeout period, in seconds. The default value is 30min. + + SESSION_IDLE_TIMEOUT = 1800 + +That's it, you will receive a session timeout message using +the Django message framework in your templates. + + + +Important +--------- + +This is a for of http://github.com/subhranath/django-session-idle-timeout diff --git a/sessions/middleware.py b/sessions/middleware.py index da9b024..2c9c208 100644 --- a/sessions/middleware.py +++ b/sessions/middleware.py @@ -1,8 +1,14 @@ +# -*- coding: utf-8 -*- + +import datetime + from django.contrib.auth import logout from django.contrib import messages -import datetime +from django.conf import settings +from django.utils.translation import ugettext as _ + +SESSION_IDLE_TIMEOUT = getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800) -import settings class SessionIdleTimeout: """Middleware class to timeout a session after a specified time period. @@ -11,14 +17,14 @@ def process_request(self, request): # Timeout is done only for authenticated logged in users. if request.user.is_authenticated(): current_datetime = datetime.datetime.now() - + # Timeout if idle time period is exceeded. if request.session.has_key('last_activity') and \ (current_datetime - request.session['last_activity']).seconds > \ - settings.SESSION_IDLE_TIMEOUT: + SESSION_IDLE_TIMEOUT: logout(request) - messages.add_message(request, messages.ERROR, 'Your session has been timed out.') - # Set last activity time in current session. + messages.add_message(request, messages.ERROR, + _('Your session has been timed out.')) else: request.session['last_activity'] = current_datetime return None diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..3d76f56 --- /dev/null +++ b/setup.py @@ -0,0 +1,38 @@ +from setuptools import setup, find_packages + +setup( + name = "django-session-idle-timeout", + install_requires = [ + 'django', + ], + packages = find_packages('.'), + package_dir = {'':'.'}, + version = "1.0.0", + description = "Timeout a logged user after a period of time", + long_description=open('README.md').read(-1), + author = "Tomas Zulberti", + author_email = "tzulberti@gmail.com", + url = "http://github.com/tzulberti/django-request-provider", + keywords = [ + "django contrib", + "request object provider" + ], + classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'License :: OSI Approved :: BSD License', + 'Framework :: Django', + 'Programming Language :: Python', + 'Programming Language :: Python :: 2.4', + 'Programming Language :: Python :: 2.5', + 'Programming Language :: Python :: 2.6', + 'Programming Language :: Python :: 2.7', + 'Topic :: Software Development :: Libraries :: Python Modules', + 'Topic :: Internet :: WWW/HTTP :: WSGI', + 'Topic :: Software Development :: Libraries :: Application Frameworks', + 'Topic :: Internet :: WWW/HTTP :: Dynamic Content', + 'Environment :: Web Environment', + 'Operating System :: OS Independent' + ], + license = 'License :: OSI Approved :: BSD License', +) From 4be017f71fcdde08aecac28c091a59381921fa72 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:10:14 -0300 Subject: [PATCH 02/23] Added basic gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d9437c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.log +*.pot +*.pyc +local_settings.py From 0384e2c0eaa91306b49f4c0bac62fdfb907e7227 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:10:59 -0300 Subject: [PATCH 03/23] Ignoring build folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d9437c3..3c5e512 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.pot *.pyc local_settings.py +django_session_idle_timeout.egg-info/ From 597e68182449330d1a7ae26a8a34d80d4000ab6b Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:11:27 -0300 Subject: [PATCH 04/23] Updated keywords --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3d76f56..0cb0727 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ url = "http://github.com/tzulberti/django-request-provider", keywords = [ "django contrib", - "request object provider" + "session login expiration" ], classifiers = [ 'Development Status :: 5 - Production/Stable', From 95315b5b681ac20ec7fecf8a15e28c96e08eedb9 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:51:31 -0300 Subject: [PATCH 05/23] Ignore build folders. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 3c5e512..b997526 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ *.pyc local_settings.py django_session_idle_timeout.egg-info/ +build/ +dist/ From f57ded4dc3484721e9e3adb54a2a4205ff6a1b48 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Thu, 21 Jun 2012 10:59:10 -0300 Subject: [PATCH 06/23] Added zip_safe flag --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0cb0727..7186f62 100644 --- a/setup.py +++ b/setup.py @@ -7,10 +7,11 @@ ], packages = find_packages('.'), package_dir = {'':'.'}, - version = "1.0.0", + version = "1.0.1", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", + zip_safe = False, author_email = "tzulberti@gmail.com", url = "http://github.com/tzulberti/django-request-provider", keywords = [ From eb4461f0a35cecdbcc25f54b01257d32edc32306 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Tue, 3 Jul 2012 14:18:10 -0300 Subject: [PATCH 07/23] Improved documentation --- README.md | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 08f04ad..5914a2c 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,36 @@ django-session-idle-timeout =========================== - - - A Django middleware application to timeout a logged in user session after a specified time period. -Installation instructions: -- Make sure the following Django apps/middlewares are enabled. - - Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) - - Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) - - Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) +Installation instructions +------------------------- + +Make sure the following Django apps/middlewares are enabled. + +- Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) +- Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) +- Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) -- Install django-session-idle-timeout +Install django-session-idle-timeout easy_install django-session-idle-timeout -- Update the *settings.py* +Update the *MIDDLEWARE_CLASSES* on the *settings.py*. Add the +`sessions.middleware.SessionIdleTimeout` at the bottom. - - Update the *MIDDLEWARE_CLASSES*. Add the - `sessions.middleware.SessionIdleTimeout` at the bottom. + MIDDLEWARE_CLASSES = ( + ... + 'sessions.middleware.SessionIdleTimeout', + ) - MIDDLEWARE_CLASSES = ( - ... - 'sessions.middleware.SessionIdleTimeout', - ) +Update the *INSTALLED_APPS*. Add 'sessions'. - - Update the *INSTALLED_APPS*. Add 'sessions'. - - Add a new entry named 'SESSION_IDLE_TIMEOUT', and specify the idle - timeout period, in seconds. The default value is 30min. +Add a new entry named 'SESSION_IDLE_TIMEOUT', and specify the idle +timeout period, in seconds. The default value is 30min. - SESSION_IDLE_TIMEOUT = 1800 + SESSION_IDLE_TIMEOUT = 1800 That's it, you will receive a session timeout message using the Django message framework in your templates. From 96ae20a42a622eff40b04302ada76f4ec54800ad Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Mon, 7 Jan 2013 17:23:17 +0100 Subject: [PATCH 08/23] rename app and improve readme --- README.md | 78 ++++++++++++------- .../__init__.py | 0 .../middleware.py | 0 3 files changed, 52 insertions(+), 26 deletions(-) rename {sessions => django-session-idle-timeout}/__init__.py (100%) rename {sessions => django-session-idle-timeout}/middleware.py (100%) diff --git a/README.md b/README.md index 5914a2c..4dc156e 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,69 @@ -django-session-idle-timeout -=========================== +# django-session-idle-timeout -A Django middleware application to timeout a logged in user +A Django middleware application to timeout a logged in user session after a specified time period. +A django message will be issued if the session gets timed out. -Installation instructions -------------------------- +## Requirements -Make sure the following Django apps/middlewares are enabled. +Make sure the following Django apps and middlewares are enabled: +* Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) +* Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) +* Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) -- Authentication (http://docs.djangoproject.com/en/dev/topics/auth/) -- Sessions (http://docs.djangoproject.com/en/dev/topics/http/sessions/) -- Messages framework (http://docs.djangoproject.com/en/dev/ref/contrib/messages/) +```python +INSTALLED_APPS += ( + 'django.contrib.auth', + 'django.contrib.sessions', + 'django.contrib.messages', +) +``` -Install django-session-idle-timeout +```python +MIDDLEWARE_CLASSES += ( + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', +) +``` + +## Installation instructions - easy_install django-session-idle-timeout +Install django-session-idle-timeout +```bash +easy_install django-session-idle-timeout +``` -Update the *MIDDLEWARE_CLASSES* on the *settings.py*. Add the -`sessions.middleware.SessionIdleTimeout` at the bottom. +or - MIDDLEWARE_CLASSES = ( - ... - 'sessions.middleware.SessionIdleTimeout', - ) +```bash +pip install django-session-idle-timeout +``` -Update the *INSTALLED_APPS*. Add 'sessions'. +### Installed apps -Add a new entry named 'SESSION_IDLE_TIMEOUT', and specify the idle -timeout period, in seconds. The default value is 30min. +```python +INSTALLED_APPS += ( + 'django-session-idle-timeout', +) +``` - SESSION_IDLE_TIMEOUT = 1800 +### Middleware -That's it, you will receive a session timeout message using -the Django message framework in your templates. +```python +MIDDLEWARE_CLASSES += ( + 'django-session-idle-timeout.middleware.SessionIdleTimeout', +) +``` +### Settings +SESSION_IDLE_TIMEOUT defines the period after which the session gets timed out in seconds. +The default value is 30min. -Important ---------- +```python +SESSION_IDLE_TIMEOUT = 1800 +``` -This is a for of http://github.com/subhranath/django-session-idle-timeout +## Important +This is a fork of http://github.com/subhranath/django-session-idle-timeout diff --git a/sessions/__init__.py b/django-session-idle-timeout/__init__.py similarity index 100% rename from sessions/__init__.py rename to django-session-idle-timeout/__init__.py diff --git a/sessions/middleware.py b/django-session-idle-timeout/middleware.py similarity index 100% rename from sessions/middleware.py rename to django-session-idle-timeout/middleware.py From a578ca03970e5e0a8974b815b180d5d1c4eb0c1f Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Mon, 7 Jan 2013 17:57:40 +0100 Subject: [PATCH 09/23] add javascript ping to keep session alive --- MANIFEST.in | 2 ++ .../templates/session_keep_alive.html | 11 +++++++++++ django-session-idle-timeout/templatetags/__init__.py | 1 + .../templatetags/session_keep_alive.py | 11 +++++++++++ django-session-idle-timeout/urls.py | 8 ++++++++ django-session-idle-timeout/views.py | 7 +++++++ 6 files changed, 40 insertions(+) create mode 100644 MANIFEST.in create mode 100644 django-session-idle-timeout/templates/session_keep_alive.html create mode 100644 django-session-idle-timeout/templatetags/__init__.py create mode 100644 django-session-idle-timeout/templatetags/session_keep_alive.py create mode 100644 django-session-idle-timeout/urls.py create mode 100644 django-session-idle-timeout/views.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..89d644b --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +include README.md +recursive-include django-session-idle-timeout/templates * diff --git a/django-session-idle-timeout/templates/session_keep_alive.html b/django-session-idle-timeout/templates/session_keep_alive.html new file mode 100644 index 0000000..5e385e7 --- /dev/null +++ b/django-session-idle-timeout/templates/session_keep_alive.html @@ -0,0 +1,11 @@ +{% load url from future %} + diff --git a/django-session-idle-timeout/templatetags/__init__.py b/django-session-idle-timeout/templatetags/__init__.py new file mode 100644 index 0000000..8d98fed --- /dev/null +++ b/django-session-idle-timeout/templatetags/__init__.py @@ -0,0 +1 @@ +# -*- coding: UTF-8 -*- diff --git a/django-session-idle-timeout/templatetags/session_keep_alive.py b/django-session-idle-timeout/templatetags/session_keep_alive.py new file mode 100644 index 0000000..a657cf9 --- /dev/null +++ b/django-session-idle-timeout/templatetags/session_keep_alive.py @@ -0,0 +1,11 @@ +# -*- coding: UTF-8 -*- +from django import template +from django.conf import settings + +register = template.Library() + +def session_keep_alive(context): + return context.update({ + 'interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, + }) +register.inclusion_tag('session_keep_alive.html', takes_context=True)(session_keep_alive) diff --git a/django-session-idle-timeout/urls.py b/django-session-idle-timeout/urls.py new file mode 100644 index 0000000..724ff5f --- /dev/null +++ b/django-session-idle-timeout/urls.py @@ -0,0 +1,8 @@ +# -*- coding: UTF-8 -*- + +from django.conf.urls import patterns, url +import views + +urlpatterns = patterns('', + url(r"^/?", views.PingView.as_view(), name="django-session-idle-timeout_ping"), +) diff --git a/django-session-idle-timeout/views.py b/django-session-idle-timeout/views.py new file mode 100644 index 0000000..f420872 --- /dev/null +++ b/django-session-idle-timeout/views.py @@ -0,0 +1,7 @@ +# -*- coding: UTF-8 -*- +from django.views.generic import View +from django.http import HttpResponse + +class PingView(View): + def get(self, request): + return HttpResponse('pong') From 6c5dc7356856afd82108e511ed9b02552eda07eb Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Mon, 7 Jan 2013 18:02:57 +0100 Subject: [PATCH 10/23] document keepalive ping feature --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 4dc156e..dc5923c 100644 --- a/README.md +++ b/README.md @@ -65,5 +65,26 @@ The default value is 30min. SESSION_IDLE_TIMEOUT = 1800 ``` +## Keepalive Ping + +Keeps the session alive as long as the browser window is opened using a javascript ping. + +### Urls + +Add to your urls.py e.g.: +```python +urlpatterns += ( + url(r'^django-session-idle-timeout/', include('django-session-idle-timeout.urls')), +) +``` + +### Template + +Load the keepalive template tag to start the javascript polling: +```django +{% session_keep_alive %} +{% load session_keep_alive %} +``` + ## Important This is a fork of http://github.com/subhranath/django-session-idle-timeout From cdf855614a6f6af26eac191c214d5859482eec5d Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Wed, 9 Jan 2013 10:58:40 +0100 Subject: [PATCH 11/23] set version to 1.1 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7186f62..644c338 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ ], packages = find_packages('.'), package_dir = {'':'.'}, - version = "1.0.1", + version = "1.1", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", From 30950029e549bb67272f0bb411b6b0b712b5bc9e Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Wed, 9 Jan 2013 15:11:18 +0100 Subject: [PATCH 12/23] update setup.py, bump to 1.1.1 --- setup.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index 644c338..3e27462 100644 --- a/setup.py +++ b/setup.py @@ -3,17 +3,16 @@ setup( name = "django-session-idle-timeout", install_requires = [ - 'django', + 'Django', ], - packages = find_packages('.'), - package_dir = {'':'.'}, - version = "1.1", + packages = find_packages(), + version = "1.1.1", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", zip_safe = False, author_email = "tzulberti@gmail.com", - url = "http://github.com/tzulberti/django-request-provider", + url = "http://github.com/tzulberti/django-session-idle-timeout", keywords = [ "django contrib", "session login expiration" From 22d4b009817f7cab3f6a691567592500fe439c3a Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Wed, 9 Jan 2013 15:16:16 +0100 Subject: [PATCH 13/23] fix template inclusion, bump to 1.1.2 --- .../{session_keep_alive.html => session-idle-timeout/js.html} | 0 django-session-idle-timeout/templatetags/session_keep_alive.py | 2 +- setup.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename django-session-idle-timeout/templates/{session_keep_alive.html => session-idle-timeout/js.html} (100%) diff --git a/django-session-idle-timeout/templates/session_keep_alive.html b/django-session-idle-timeout/templates/session-idle-timeout/js.html similarity index 100% rename from django-session-idle-timeout/templates/session_keep_alive.html rename to django-session-idle-timeout/templates/session-idle-timeout/js.html diff --git a/django-session-idle-timeout/templatetags/session_keep_alive.py b/django-session-idle-timeout/templatetags/session_keep_alive.py index a657cf9..a10a9ee 100644 --- a/django-session-idle-timeout/templatetags/session_keep_alive.py +++ b/django-session-idle-timeout/templatetags/session_keep_alive.py @@ -8,4 +8,4 @@ def session_keep_alive(context): return context.update({ 'interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, }) -register.inclusion_tag('session_keep_alive.html', takes_context=True)(session_keep_alive) +register.inclusion_tag('session-idle-timeout/js.html', takes_context=True)(session_keep_alive) diff --git a/setup.py b/setup.py index 3e27462..7eb916c 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ 'Django', ], packages = find_packages(), - version = "1.1.1", + version = "1.1.2", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", From c67bca370af2425a74c522429d6c286256391356 Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Wed, 9 Jan 2013 15:28:18 +0100 Subject: [PATCH 14/23] change template folder, change templatetag definition, bump to 1.1.3 --- .../{session-idle-timeout => sessionidletimeout}/js.html | 0 django-session-idle-timeout/templatetags/session_keep_alive.py | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) rename django-session-idle-timeout/templates/{session-idle-timeout => sessionidletimeout}/js.html (100%) diff --git a/django-session-idle-timeout/templates/session-idle-timeout/js.html b/django-session-idle-timeout/templates/sessionidletimeout/js.html similarity index 100% rename from django-session-idle-timeout/templates/session-idle-timeout/js.html rename to django-session-idle-timeout/templates/sessionidletimeout/js.html diff --git a/django-session-idle-timeout/templatetags/session_keep_alive.py b/django-session-idle-timeout/templatetags/session_keep_alive.py index a10a9ee..1739427 100644 --- a/django-session-idle-timeout/templatetags/session_keep_alive.py +++ b/django-session-idle-timeout/templatetags/session_keep_alive.py @@ -3,9 +3,8 @@ from django.conf import settings register = template.Library() - +@register.inclusion_tag('sessionidletimeout/js.html', takes_context=True) def session_keep_alive(context): return context.update({ 'interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, }) -register.inclusion_tag('session-idle-timeout/js.html', takes_context=True)(session_keep_alive) From c8f2b3f98c26b107ccb01e61af5b461b1eeaaedd Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Wed, 9 Jan 2013 15:52:01 +0100 Subject: [PATCH 15/23] include package data in setup, bump to 1.1.4 --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 7eb916c..4087ced 100644 --- a/setup.py +++ b/setup.py @@ -6,6 +6,7 @@ 'Django', ], packages = find_packages(), + include_package_data=True, version = "1.1.2", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), From f91ca3f017d6658fbf28838c4b62e38ef41e6430 Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Fri, 25 Jan 2013 11:37:22 +0100 Subject: [PATCH 16/23] rename interval template var to prevent conflicts, bump to 1.1.5 --- .../templates/sessionidletimeout/js.html | 2 +- django-session-idle-timeout/templatetags/session_keep_alive.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/django-session-idle-timeout/templates/sessionidletimeout/js.html b/django-session-idle-timeout/templates/sessionidletimeout/js.html index 5e385e7..0f56230 100644 --- a/django-session-idle-timeout/templates/sessionidletimeout/js.html +++ b/django-session-idle-timeout/templates/sessionidletimeout/js.html @@ -7,5 +7,5 @@ } // ping every five minutes - setInterval(session_keep_alive, {{ interval }}); + setInterval(session_keep_alive, {{ session-keepalive-interval }}); diff --git a/django-session-idle-timeout/templatetags/session_keep_alive.py b/django-session-idle-timeout/templatetags/session_keep_alive.py index 1739427..943da80 100644 --- a/django-session-idle-timeout/templatetags/session_keep_alive.py +++ b/django-session-idle-timeout/templatetags/session_keep_alive.py @@ -6,5 +6,5 @@ @register.inclusion_tag('sessionidletimeout/js.html', takes_context=True) def session_keep_alive(context): return context.update({ - 'interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, + 'session-keepalive-interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, }) diff --git a/setup.py b/setup.py index 4087ced..cf35771 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ ], packages = find_packages(), include_package_data=True, - version = "1.1.2", + version = "1.1.5", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", From 1f66ae6e846759ae789eba0350ab86c9a0cf0b39 Mon Sep 17 00:00:00 2001 From: Tomas Zulberti Date: Fri, 25 Jan 2013 07:57:19 -0300 Subject: [PATCH 17/23] New release --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index cf35771..438a954 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ ], packages = find_packages(), include_package_data=True, - version = "1.1.5", + version = "1.3.0", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", From 93fdde00bf94674b5308713d30a07d6509102c1c Mon Sep 17 00:00:00 2001 From: Jens Nistler Date: Fri, 25 Jan 2013 12:34:34 +0100 Subject: [PATCH 18/23] fix variable naming error, bump to 1.3.1 --- .../templates/sessionidletimeout/js.html | 2 +- django-session-idle-timeout/templatetags/session_keep_alive.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/django-session-idle-timeout/templates/sessionidletimeout/js.html b/django-session-idle-timeout/templates/sessionidletimeout/js.html index 0f56230..4189180 100644 --- a/django-session-idle-timeout/templates/sessionidletimeout/js.html +++ b/django-session-idle-timeout/templates/sessionidletimeout/js.html @@ -7,5 +7,5 @@ } // ping every five minutes - setInterval(session_keep_alive, {{ session-keepalive-interval }}); + setInterval(session_keep_alive, {{ session_keepalive_interval }}); diff --git a/django-session-idle-timeout/templatetags/session_keep_alive.py b/django-session-idle-timeout/templatetags/session_keep_alive.py index 943da80..08bfe5b 100644 --- a/django-session-idle-timeout/templatetags/session_keep_alive.py +++ b/django-session-idle-timeout/templatetags/session_keep_alive.py @@ -6,5 +6,5 @@ @register.inclusion_tag('sessionidletimeout/js.html', takes_context=True) def session_keep_alive(context): return context.update({ - 'session-keepalive-interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, + 'session_keepalive_interval': int(getattr(settings, 'SESSION_IDLE_TIMEOUT', 1800)) / 2 * 1000, }) diff --git a/setup.py b/setup.py index 438a954..149a563 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ ], packages = find_packages(), include_package_data=True, - version = "1.3.0", + version = "1.3.1", description = "Timeout a logged user after a period of time", long_description=open('README.md').read(-1), author = "Tomas Zulberti", From 9eb093752eb447791aee9548d7d2d9955b904b09 Mon Sep 17 00:00:00 2001 From: yourcoke Date: Mon, 12 May 2014 23:34:22 +0200 Subject: [PATCH 19/23] Update middleware.py Changed from datetime objects to timestamps allowing the use of serializers.JSONSerializer for session serialization (as it the default serialization since Django 1.6.x). Probably faster as well. --- django-session-idle-timeout/middleware.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/django-session-idle-timeout/middleware.py b/django-session-idle-timeout/middleware.py index 2c9c208..13b5dc6 100644 --- a/django-session-idle-timeout/middleware.py +++ b/django-session-idle-timeout/middleware.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -import datetime +import time from django.contrib.auth import logout from django.contrib import messages @@ -16,15 +16,15 @@ class SessionIdleTimeout: def process_request(self, request): # Timeout is done only for authenticated logged in users. if request.user.is_authenticated(): - current_datetime = datetime.datetime.now() + current_timestamp = int(time.time()) # Timeout if idle time period is exceeded. if request.session.has_key('last_activity') and \ - (current_datetime - request.session['last_activity']).seconds > \ + (current_timestamp - request.session['last_activity']) > \ SESSION_IDLE_TIMEOUT: logout(request) messages.add_message(request, messages.ERROR, _('Your session has been timed out.')) else: - request.session['last_activity'] = current_datetime + request.session['last_activity'] = current_timestamp return None From 8f0b1ec24427746dc12867f4b84ff627b133c7a1 Mon Sep 17 00:00:00 2001 From: Peter Farrell Date: Mon, 14 Jul 2014 18:11:25 -0500 Subject: [PATCH 20/23] Use of i10n causes output of variable with thousands separator Add in unlocalize --- .../templates/sessionidletimeout/js.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django-session-idle-timeout/templates/sessionidletimeout/js.html b/django-session-idle-timeout/templates/sessionidletimeout/js.html index 4189180..d9b756d 100644 --- a/django-session-idle-timeout/templates/sessionidletimeout/js.html +++ b/django-session-idle-timeout/templates/sessionidletimeout/js.html @@ -1,4 +1,4 @@ -{% load url from future %} +{% load url from future l10n %} From 3326308d98475f9681f721d68fdfd82bd46a404e Mon Sep 17 00:00:00 2001 From: Peter Farrell Date: Mon, 14 Jul 2014 18:14:48 -0500 Subject: [PATCH 21/23] fixed localization --- .../templates/sessionidletimeout/js.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django-session-idle-timeout/templates/sessionidletimeout/js.html b/django-session-idle-timeout/templates/sessionidletimeout/js.html index d9b756d..1432dc9 100644 --- a/django-session-idle-timeout/templates/sessionidletimeout/js.html +++ b/django-session-idle-timeout/templates/sessionidletimeout/js.html @@ -1,4 +1,5 @@ -{% load url from future l10n %} +{% load url from future %} +{% load l10n %}