middlewares.py
39 lines
| 1.1 KiB
| text/x-python
|
PythonLexer
/ boards / middlewares.py
neko259
|
r210 | from django.shortcuts import redirect | |
from boards import views, utils | |||
from boards.models import Ban | |||
neko259
|
r444 | from django.utils.html import strip_spaces_between_tags | |
from django.conf import settings | |||
RESPONSE_CONTENT_TYPE = 'Content-Type' | |||
TYPE_HTML = 'text/html' | |||
neko259
|
r210 | ||
class BanMiddleware: | |||
neko259
|
r444 | """ | |
This is run before showing the thread. Banned users don't need to see | |||
anything | |||
""" | |||
neko259
|
r210 | ||
def process_view(self, request, view_func, view_args, view_kwargs): | |||
if view_func != views.you_are_banned: | |||
ip = utils.get_client_ip(request) | |||
neko259
|
r340 | bans = Ban.objects.filter(ip=ip) | |
neko259
|
r210 | ||
neko259
|
r340 | if bans.exists(): | |
ban = bans[0] | |||
if not ban.can_read: | |||
neko259
|
r444 | 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 TYPE_HTML in response[RESPONSE_CONTENT_TYPE] and compress_html: | |||
response.content = strip_spaces_between_tags( | |||
response.content.strip()) | |||
return response |