middlewares.py
45 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
/ boards / middlewares.py
neko259
|
r210 | from django.shortcuts import redirect | |
neko259
|
r690 | from boards import utils | |
neko259
|
r210 | from boards.models import Ban | |
neko259
|
r444 | from django.utils.html import strip_spaces_between_tags | |
from django.conf import settings | |||
neko259
|
r690 | from boards.views.banned import BannedView | |
neko259
|
r444 | ||
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 | ||
neko259
|
r721 | def __init__(self): | |
pass | |||
neko259
|
r210 | def process_view(self, request, view_func, view_args, view_kwargs): | |
neko259
|
r690 | if view_func != BannedView.as_view: | |
neko259
|
r210 | 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
|
r542 | return redirect('banned') | |
neko259
|
r444 | ||
class MinifyHTMLMiddleware(object): | |||
def process_response(self, request, response): | |||
try: | |||
compress_html = settings.COMPRESS_HTML | |||
except AttributeError: | |||
compress_html = False | |||
neko259
|
r459 | if RESPONSE_CONTENT_TYPE in response\ | |
neko259
|
r721 | and TYPE_HTML in response[RESPONSE_CONTENT_TYPE]\ | |
and compress_html: | |||
neko259
|
r444 | response.content = strip_spaces_between_tags( | |
response.content.strip()) | |||
return response |