user.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.utils import timezone
  2. from django.utils.translation import ugettext_lazy as _
  3. from misago import messages
  4. from misago.conf import settings
  5. from misago.monitor import monitor, UpdatingMonitor
  6. from misago.onlines import MembersOnline
  7. def set_timezone(new_tz):
  8. if settings.USE_TZ:
  9. try:
  10. import pytz
  11. timezone.activate(pytz.timezone(new_tz))
  12. except ImportError:
  13. pass
  14. class UserMiddleware(object):
  15. def process_request(self, request):
  16. if request.user.is_authenticated():
  17. if request.user.alerts > 0:
  18. if not request.session.get('recent_alerts'):
  19. if not request.user.alerts_date:
  20. request.session['recent_alerts'] = request.user.join_date
  21. else:
  22. request.session['recent_alerts'] = request.user.alerts_date
  23. request.session.rank = request.user.rank_id
  24. set_timezone(request.user.timezone)
  25. if request.session.remember_me:
  26. request.messages.set_message(_("Welcome back, %(username)s! We've signed you in automatically for your convenience.") % {'username': request.user.username})
  27. else:
  28. set_timezone(settings.default_timezone)
  29. request.session.rank = None
  30. request.onlines = MembersOnline(settings.online_counting, settings.online_counting_frequency)
  31. def process_response(self, request, response):
  32. try:
  33. request.onlines.sync()
  34. except AttributeError:
  35. pass
  36. return response