Browse Source

Small tweak in online counting.

Ralfp 12 years ago
parent
commit
6798cac37d
2 changed files with 12 additions and 5 deletions
  1. 4 1
      misago/apps/index.py
  2. 8 4
      misago/onlines.py

+ 4 - 1
misago/apps/index.py

@@ -65,11 +65,14 @@ def index(request):
                     'members': request.onlines.members(),
                     'all': request.onlines.all(),
                    }
+
+    # Final cleanup of stats to don't confuse people
     if not users_online['members'] and request.user.is_authenticated():
         users_online['members'] += 1
     if users_online['members'] > users_online['all']:
         users_online['all'] = users_online['members']
-    if users_online['members'] >= users_online['all'] and request.user.is_anonymous():
+    if (users_online['members'] == users_online['all'] and
+            not request.user.is_authenticated()):
         users_online['all'] += 1
 
     # Load reads tracker and build forums list

+ 8 - 4
misago/onlines.py

@@ -10,10 +10,14 @@ class MembersOnline(object):
         self._all = int(monitor['online_all'])
         self._om = self._members
         self._oa = self._all
-        if monitor.expired('online_all', frequency):
-            queryset = Session.objects.filter(matched=True).filter(crawler__isnull=True).filter(last__gte=timezone.now() - timedelta(seconds=frequency))
-            self._all = queryset.count()
-            self._members = queryset.filter(user__isnull=False).count()
+        if (monitor.expired('online_all', frequency) or
+                monitor.expired('online_members', frequency)):
+            self.count_sessions()
+
+    def count_sessions(self):
+        queryset = Session.objects.filter(matched=True).filter(crawler__isnull=True).filter(last__gte=timezone.now() - timedelta(seconds=self.frequency))
+        self._all = queryset.count()
+        self._members = queryset.filter(user__isnull=False).count()
 
     def new_session(self):
         self._all += 1