|
@@ -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)
|