from django.utils import timezone from misago.sessions.sessions import SessionCrawler, SessionHuman class SessionMiddleware(object): def process_request(self, request): try: if request.user.is_crawler(): # Crawler Session request.session = SessionCrawler(request) except AttributeError: # Human Session request.session = SessionHuman(request) request.user = request.session.get_user() if request.user.is_authenticated(): request.session.set_hidden(request.user.hide_activity > 0) def process_response(self, request, response): try: # Sync last visit date if request.user.is_authenticated(): visit_sync = request.session.get('visit_sync') if not visit_sync or (timezone.now() - visit_sync).seconds >= 900: request.session['visit_sync'] = timezone.now() request.user.last_date = timezone.now() request.user.save(force_update=True) request.session.save() except AttributeError: pass return response