middlewares.py
42 lines
| 1.0 KiB
| text/x-python
|
PythonLexer
/ boards / middlewares.py
neko259
|
r1065 | import pytz | ||
neko259
|
r210 | from django.shortcuts import redirect | ||
neko259
|
r1065 | from django.utils import timezone | ||
neko259
|
r2018 | from django.utils.deprecation import MiddlewareMixin | ||
neko259
|
r1065 | |||
neko259
|
r690 | from boards import utils | ||
neko259
|
r210 | from boards.models import Ban | ||
neko259
|
r444 | |||
neko259
|
r2012 | PATH_BANNED = '/banned/' | ||
neko259
|
r1090 | SESSION_TIMEZONE = 'django_timezone' | ||
neko259
|
r444 | RESPONSE_CONTENT_TYPE = 'Content-Type' | ||
TYPE_HTML = 'text/html' | ||||
neko259
|
r210 | |||
neko259
|
r2018 | class BanMiddleware(MiddlewareMixin): | ||
neko259
|
r444 | """ | ||
This is run before showing the thread. Banned users don't need to see | ||||
anything | ||||
""" | ||||
neko259
|
r2018 | def process_request(self, request): | ||
neko259
|
r2012 | if request.path != PATH_BANNED: | ||
neko259
|
r210 | ip = utils.get_client_ip(request) | ||
neko259
|
r2012 | try: | ||
ban = Ban.objects.get(ip=ip) | ||||
neko259
|
r210 | |||
neko259
|
r340 | if not ban.can_read: | ||
neko259
|
r542 | return redirect('banned') | ||
neko259
|
r2012 | except Ban.DoesNotExist: | ||
pass | ||||
neko259
|
r1065 | |||
neko259
|
r1986 | |||
neko259
|
r2018 | class TimezoneMiddleware(MiddlewareMixin): | ||
def process_request(self, request): | ||||
neko259
|
r1090 | tzname = request.session.get(SESSION_TIMEZONE) | ||
neko259
|
r1065 | if tzname: | ||
timezone.activate(pytz.timezone(tzname)) | ||||
else: | ||||
timezone.deactivate() | ||||