2009-04-03 23:38:12 +03:00
from datetime import datetime , timedelta
2009-01-05 14:30:08 +02:00
from django . core . cache import cache
2009-03-03 18:30:41 +02:00
from django . utils import translation
2009-04-03 23:38:12 +03:00
from django . conf import settings as global_settings
2009-01-17 17:56:19 +02:00
2009-03-31 00:03:16 +03:00
from forum import settings as forum_settings
2009-01-05 14:30:08 +02:00
class LastLoginMiddleware ( object ) :
def process_request ( self , request ) :
2009-04-03 23:38:12 +03:00
if request . user . is_authenticated ( ) :
cache . set ( str ( request . user . id ) , True , forum_settings . USER_ONLINE_TIMEOUT )
2009-03-03 18:30:41 +02:00
class ForumMiddleware ( object ) :
def process_request ( self , request ) :
if request . user . is_authenticated ( ) :
profile = request . user . forum_profile
language = translation . get_language_from_request ( request )
if not profile . language :
profile . language = language
profile . save ( )
if profile . language and profile . language != language :
request . session [ ' django_language ' ] = profile . language
translation . activate ( profile . language )
request . LANGUAGE_CODE = translation . get_language ( )
2009-04-03 23:38:12 +03:00
class UsersOnline ( object ) :
def process_request ( self , request ) :
now = datetime . now ( )
2009-04-07 15:49:12 +03:00
delta = now - timedelta ( minutes = forum_settings . USER_ONLINE_TIMEOUT )
users_online = cache . get ( ' users_online ' , { } )
guests_online = cache . get ( ' guests_online ' , { } )
2009-04-03 23:38:12 +03:00
if request . user . is_authenticated ( ) :
users_online [ request . user . id ] = now
else :
guest_sid = request . COOKIES . get ( global_settings . SESSION_COOKIE_NAME , ' ' )
guests_online [ guest_sid ] = now
2009-04-07 15:49:12 +03:00
for user_id in users_online :
if users_online [ user_id ] < delta :
del users_online [ user_id ]
for guest_id in guests_online :
if guests_online [ guest_id ] < delta :
del guests_online [ guest_id ]
cache . set ( ' users_online ' , users_online , 60 * 60 * 24 )
cache . set ( ' guests_online ' , guests_online , 60 * 60 * 24 )