|
|
import pytz
|
|
|
|
|
|
from django.shortcuts import redirect
|
|
|
from django.utils import timezone
|
|
|
|
|
|
from boards import utils
|
|
|
from boards.models import Ban
|
|
|
|
|
|
SESSION_TIMEZONE = 'django_timezone'
|
|
|
|
|
|
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 __init__(self, get_response):
|
|
|
self.get_response = get_response
|
|
|
|
|
|
def __call__(self, request):
|
|
|
response = self.get_response(request)
|
|
|
|
|
|
if request.path != '/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('banned')
|
|
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
class TimezoneMiddleware(object):
|
|
|
def __init__(self, get_response):
|
|
|
self.get_response = get_response
|
|
|
|
|
|
def __call__(self, request):
|
|
|
response = self.get_response(request)
|
|
|
|
|
|
tzname = request.session.get(SESSION_TIMEZONE)
|
|
|
if tzname:
|
|
|
timezone.activate(pytz.timezone(tzname))
|
|
|
else:
|
|
|
timezone.deactivate()
|
|
|
|
|
|
return response
|
|
|
|
|
|
|