snipt/blogs/middleware.py

51 lines
2.0 KiB
Python

from annoying.functions import get_object_or_None
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
class BlogMiddleware:
def process_request(self, request):
request.blog_user = None
host = request.META.get('HTTP_HOST', '')
host_s = host.replace('www.', '').split('.')
if host != 'snippets.siftie.com' and \
host != 'snipt.localhost' and \
host != 'local.snippets.siftie.com':
if len(host_s) > 2:
if host_s[1] == 'snipt':
blog_user = ''.join(host_s[:-2])
if '-' in blog_user:
request.blog_user = \
get_object_or_None(User,
username__iexact=blog_user)
if request.blog_user is None:
request.blog_user = \
get_object_or_404(User,
username__iexact=blog_user
.replace('-', '_'))
else:
request.blog_user = \
get_object_or_404(User, username__iexact=blog_user)
if request.blog_user is None:
pro_users = User.objects.filter(userprofile__is_pro=True)
for pro_user in pro_users:
if pro_user.profile.blog_domain:
if host in pro_user.profile.blog_domain.split(' '):
request.blog_user = pro_user
if host != \
pro_user.profile.get_primary_blog_domain():
return HttpResponseRedirect(
'http://' +
pro_user
.profile
.get_primary_blog_domain())