Browse Source

Make sure online rank user is displayed on side

Rafał Pitoń 10 years ago
parent
commit
07b88a2d40
2 changed files with 15 additions and 2 deletions
  1. 1 1
      misago/core/views.py
  2. 14 1
      misago/users/online/ranks.py

+ 1 - 1
misago/core/views.py

@@ -8,5 +8,5 @@ from misago.users.online.ranks import get_ranks_online
 def forum_index(request):
 def forum_index(request):
     return render(request, 'misago/index.html', {
     return render(request, 'misago/index.html', {
         'categories': get_forums_list(request.user),
         'categories': get_forums_list(request.user),
-        'ranks_online': get_ranks_online(),
+        'ranks_online': get_ranks_online(request.user),
     })
     })

+ 14 - 1
misago/users/online/ranks.py

@@ -12,8 +12,21 @@ RANKS_CACHE_NAME = 'misago_ranks_online'
 RANKS_CACHE_TIME = 3 * 60
 RANKS_CACHE_TIME = 3 * 60
 
 
 
 
-def get_ranks_online():
+def get_ranks_online(viewer=None):
     cached_online = cache.get(RANKS_CACHE_NAME, 'nada')
     cached_online = cache.get(RANKS_CACHE_NAME, 'nada')
+
+    if viewer.is_authenticated() and viewer.rank.is_on_index:
+        if cached_online != 'nada':
+            for rank in cached_online:
+                if rank['pk'] == viewer.rank_id:
+                    for user in rank['online']:
+                        if user['id'] == viewer.pk:
+                            break
+                    else:
+                        cached_online = 'nada'
+            else:
+                cached_online = 'nada'
+
     if cached_online == 'nada':
     if cached_online == 'nada':
         cached_online = get_ranks_from_db()
         cached_online = get_ranks_from_db()
         cache.set(RANKS_CACHE_NAME, cached_online, RANKS_CACHE_TIME)
         cache.set(RANKS_CACHE_NAME, cached_online, RANKS_CACHE_TIME)