banning.py 652 B

123456789101112131415161718
  1. from misago.models import BanCache, Guest
  2. class BanningMiddleware(object):
  3. def process_request(self, request):
  4. if request.heartbeat or request.user.is_crawler():
  5. return None
  6. try:
  7. request.ban = request.session['ban']
  8. except KeyError:
  9. request.ban = BanCache()
  10. request.session['ban'] = request.ban
  11. if not request.firewall.admin:
  12. request.ban.check_for_updates(request)
  13. # Make sure banned session is downgraded to guest level
  14. if request.ban.is_banned():
  15. request.session.sign_out(request)