middleware.py 1.2 KB

123456789101112131415161718192021222324252627282930
  1. from django.utils import timezone
  2. from misago.sessions.sessions import SessionCrawler, SessionHuman
  3. class SessionMiddleware(object):
  4. def process_request(self, request):
  5. try:
  6. if request.user.is_crawler():
  7. # Crawler Session
  8. request.session = SessionCrawler(request)
  9. except AttributeError:
  10. # Human Session
  11. request.session = SessionHuman(request)
  12. request.user = request.session.get_user()
  13. if request.user.is_authenticated():
  14. request.session.set_hidden(request.user.hide_activity > 0)
  15. def process_response(self, request, response):
  16. try:
  17. # Sync last visit date
  18. if request.user.is_authenticated():
  19. visit_sync = request.session.get('visit_sync')
  20. if not visit_sync or (timezone.now() - visit_sync).seconds >= 900:
  21. request.session['visit_sync'] = timezone.now()
  22. request.user.last_date = timezone.now()
  23. request.user.save(force_update=True)
  24. request.session.save()
  25. except AttributeError:
  26. pass
  27. return response