From 4ab1f2a623a3155d85077f9c65ccb7e95479d979 Mon Sep 17 00:00:00 2001 From: Nick Sergeant Date: Tue, 12 Feb 2013 01:32:44 -0500 Subject: [PATCH] Preliminary primary blog domain support. --- accounts/models.py | 7 +++++++ blogs/middleware.py | 4 ++++ blogs/templates/blogs/themes/default/rss.xml | 4 ++-- media/js/src/modules/partials/blogging.html | 2 +- snipts/models.py | 8 ++++---- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/accounts/models.py b/accounts/models.py index b311ce2..d0a311b 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -59,4 +59,11 @@ class UserProfile(models.Model): google_ad_width = models.CharField(max_length=250, null=True, blank=True) google_ad_height = models.CharField(max_length=250, null=True, blank=True) + def get_primary_blog_domain(self): + if not self.blog_domain: + return None + else: + return self.blog_domain.split(' ')[0] + + User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0]) diff --git a/blogs/middleware.py b/blogs/middleware.py index cd90fd0..1401807 100644 --- a/blogs/middleware.py +++ b/blogs/middleware.py @@ -1,3 +1,4 @@ +from django.http import HttpResponseRedirect from django.shortcuts import get_object_or_404 from django.contrib.auth.models import User @@ -32,3 +33,6 @@ class BlogMiddleware: 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(pro_user.profile.get_primary_blog_domain) diff --git a/blogs/templates/blogs/themes/default/rss.xml b/blogs/templates/blogs/themes/default/rss.xml index e7f149e..6bb3554 100644 --- a/blogs/templates/blogs/themes/default/rss.xml +++ b/blogs/templates/blogs/themes/default/rss.xml @@ -1,10 +1,10 @@ {% if request.blog_user.profile.is_pro %} - + {% firstof request.blog_user.profile.blog_title request.blog_user.username %} {% firstof request.blog_user.profile.blog_title request.blog_user.username %} - {% if request.blog_user.profile.blog_domain %}http://{{ request.blog_user.profile.blog_domain }}/?rss{% else %}https://{{ request.blog_user.username }}.snipt.net/?rss{% endif %} + {% if request.blog_user.profile.get_primary_blog_domain %}http://{{ request.blog_user.profile.blog_domain }}/?rss{% else %}https://{{ request.blog_user.username }}.snipt.net/?rss{% endif %} {% else %} {{ request.blog_user.username }} diff --git a/media/js/src/modules/partials/blogging.html b/media/js/src/modules/partials/blogging.html index ee3ef0e..4db3ef0 100644 --- a/media/js/src/modules/partials/blogging.html +++ b/media/js/src/modules/partials/blogging.html @@ -18,7 +18,7 @@
- Like 'snipt.nicksergeant.com' or 'nicksergeant.com' (without quotes). Set your CNAME / A-record to point to 96.126.110.160 + Like 'snipt.nicksergeant.com' or 'nicksergeant.com' (without quotes). Set your CNAME / A-record to point to 96.126.110.160. You can use multiple domains here: separate each domain with a space. The first domain will be your primary domain. All other domains will redirect to your primary domain.
diff --git a/snipts/models.py b/snipts/models.py index 080543b..42def04 100644 --- a/snipts/models.py +++ b/snipts/models.py @@ -127,8 +127,8 @@ class Snipt(models.Model): def get_absolute_url(self): if self.blog_post: - if self.user.profile.is_pro and self.user.profile.blog_domain is not None and self.user.profile.blog_domain != '': - return 'http://{}/{}/'.format(self.user.profile.blog_domain, self.slug) + if self.user.profile.is_pro and self.user.profile.blog_domain: + return 'http://{}/{}/'.format(self.user.profile.blog_domain.split(' ')[0], self.slug) else: return 'https://{}.snipt.net/{}/'.format(self.user.username.replace('_', '-'), self.slug) @@ -143,8 +143,8 @@ class Snipt(models.Model): def get_full_absolute_url(self): if self.blog_post: - if self.user.profile.is_pro and self.user.profile.blog_domain is not None and self.user.profile.blog_domain != '': - return 'http://{}/{}/'.format(self.user.profile.blog_domain, self.slug) + if self.user.profile.is_pro and self.user.profile.blog_domain: + return 'http://{}/{}/'.format(self.user.profile.blog_domain.split(' ')[0], self.slug) else: return 'https://{}.snipt.net/{}/'.format(self.user.username, self.slug)