Browse Source

Merge pull request #364 from xohozu/master

fix issue #363
Rafał Pitoń 11 years ago
parent
commit
8aac99d538
2 changed files with 30 additions and 15 deletions
  1. 16 7
      misago/apps/admin/index.py
  2. 14 8
      misago/apps/admin/online/views.py

+ 16 - 7
misago/apps/admin/index.py

@@ -2,18 +2,27 @@ from django.template import RequestContext
 from misago.models import Session
 from misago.monitor import monitor
 from misago.shortcuts import render_to_response
+from misago.conf import settings
+from django.utils import timezone
+from datetime import timedelta
+
 
 def index(request):
+    sessions_expiration = timezone.now() - timedelta(seconds=settings.online_counting_frequency)
+    admin_sessions = Session.objects.filter(user__isnull=False).filter(admin=1)
+    admin_sessions = admin_sessions.filter(last__gte=sessions_expiration)
+    admin_sessions = admin_sessions.order_by('user__username_slug').select_related('user')
+
     return render_to_response('index.html',
                               {
-                               'users': monitor['users'],
-                               'users_inactive': monitor['users_inactive'],
-                               'threads': monitor['threads'],
-                               'posts': monitor['posts'],
-                               'admins': Session.objects.filter(user__isnull=False).filter(admin=1).order_by('user__username_slug').select_related('user'),
+                                  'users': monitor['users'],
+                                  'users_inactive': monitor['users_inactive'],
+                                  'threads': monitor['threads'],
+                                  'posts': monitor['posts'],
+                                  'admins': admin_sessions,
                               },
-                              context_instance=RequestContext(request));
+                              context_instance=RequestContext(request))
 
 
 def todo(request, *args, **kwargs):
-    return render_to_response('todo.html', context_instance=RequestContext(request));
+    return render_to_response('todo.html', context_instance=RequestContext(request))

+ 14 - 8
misago/apps/admin/online/views.py

@@ -2,20 +2,24 @@ from django.utils.translation import ugettext as _
 from misago.admin import site
 from misago.apps.admin.widgets import ListWidget
 from misago.apps.admin.online.forms import SearchSessionsForm
+from misago.conf import settings
+from django.utils import timezone
+from datetime import timedelta
+
 
 class List(ListWidget):
     admin = site.get_action('online')
     id = 'list'
     columns = (
-               ('owner', _("Session Owner")),
-               ('start', _("Session Start"), 25),
-               ('last', _("Last Click"), 25),
-               )
+        ('owner', _("Session Owner")),
+        ('start', _("Session Start"), 25),
+        ('last', _("Last Click"), 25),
+    )
     default_sorting = 'start'
     sortables = {
-                 'start': 0,
-                 'last': 0,
-                }
+        'start': 0,
+        'last': 0,
+    }
     hide_actions = True
     pagination = 50
     search_form = SearchSessionsForm
@@ -40,4 +44,6 @@ class List(ListWidget):
         return items.prefetch_related('user')
 
     def select_items(self, items):
-        return items.filter(matched=1).filter(admin=0)
+        sessions_expiration = timezone.now() - timedelta(seconds=settings.online_counting_frequency)
+
+        return items.filter(matched=1).filter(admin=0).filter(last__gte=sessions_expiration)