user.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.conf import settings
  2. from django.utils import timezone
  3. from django.utils.translation import ugettext_lazy as _
  4. from misago.messages import Message
  5. from misago.onlines import MembersOnline
  6. def set_timezone(new_tz):
  7. if settings.USE_TZ:
  8. try:
  9. import pytz
  10. timezone.activate(pytz.timezone(new_tz))
  11. except ImportError:
  12. pass
  13. class UserMiddleware(object):
  14. def process_request(self, request):
  15. if request.session.created() and not request.firewall.admin:
  16. request.onlines.new_session()
  17. if request.user.is_authenticated():
  18. # Set user timezone and rank
  19. request.session.rank = request.user.rank_id
  20. set_timezone(request.user.timezone)
  21. # Display "welcome back!" message
  22. if request.session.remember_me:
  23. request.onlines.sign_in()
  24. request.messages.set_message(Message(_("Welcome back, %(username)s! We've signed you in automatically for your convenience.") % {'username': request.user.username}), 'info')
  25. else:
  26. # Set guest's timezone and empty rank
  27. set_timezone(request.settings['default_timezone'])
  28. request.session.rank = None
  29. # Build online list
  30. request.onlines = MembersOnline(request.settings['online_counting'], request.monitor, request.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