from misago.models import BanCache, Guest class BanningMiddleware(object): def process_request(self, request): if request.heartbeat or request.user.is_crawler(): return None try: request.ban = request.session['ban'] except KeyError: request.ban = BanCache() request.session['ban'] = request.ban if not request.firewall.admin: request.ban.check_for_updates(request) # Make sure banned session is downgraded to guest level if request.ban.is_banned(): request.session.sign_out(request)