from django.shortcuts import redirect from boards import views, utils from boards.models import Ban from django.utils.html import strip_spaces_between_tags from django.conf import settings RESPONSE_CONTENT_TYPE = 'Content-Type' TYPE_HTML = 'text/html' class BanMiddleware: """ This is run before showing the thread. Banned users don't need to see anything """ def process_view(self, request, view_func, view_args, view_kwargs): if view_func != views.you_are_banned: ip = utils.get_client_ip(request) bans = Ban.objects.filter(ip=ip) if bans.exists(): ban = bans[0] if not ban.can_read: return redirect(views.you_are_banned) class MinifyHTMLMiddleware(object): def process_response(self, request, response): try: compress_html = settings.COMPRESS_HTML except AttributeError: compress_html = False if RESPONSE_CONTENT_TYPE in response\ and TYPE_HTML in response[RESPONSE_CONTENT_TYPE] and compress_html: response.content = strip_spaces_between_tags( response.content.strip()) return response