aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBoris Bobrov <breton@cynicmansion.ru>2014-03-11 16:23:58 +0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2014-03-11 11:29:09 -0500
commit36990574cf2cad572b1dd52653666605306022da (patch)
tree7a54419121f937a9d33d7c035042600137ec66fc
parent002da63bcef454a8d62cd52e7eee3a339cee084e (diff)
downloadmediagoblin-36990574cf2cad572b1dd52653666605306022da.tar.lz
mediagoblin-36990574cf2cad572b1dd52653666605306022da.tar.xz
mediagoblin-36990574cf2cad572b1dd52653666605306022da.zip
fixes to blog url generation
-rw-r--r--mediagoblin/media_types/blog/lib.py9
-rw-r--r--mediagoblin/media_types/blog/models.py6
-rw-r--r--mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html2
-rw-r--r--mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html4
-rw-r--r--mediagoblin/media_types/blog/views.py23
5 files changed, 27 insertions, 17 deletions
diff --git a/mediagoblin/media_types/blog/lib.py b/mediagoblin/media_types/blog/lib.py
index 62696b55..b6e3dc06 100644
--- a/mediagoblin/media_types/blog/lib.py
+++ b/mediagoblin/media_types/blog/lib.py
@@ -45,5 +45,12 @@ def get_all_blogposts_of_blog(request, blog, state=None):
blog_posts_list.append(blog_post)
blog_posts_list.reverse()
return blog_posts_list
-
+
+def get_blog_by_slug(request, slug, **kwargs):
+ if slug.startswith('blog_'):
+ blog_id = int(slug[5:])
+ blog = request.db.Blog.query.filter_by(id=blog_id, **kwargs).first()
+ else:
+ blog = request.db.Blog.query.filter_by(slug=slug, **kwargs).first()
+ return blog
diff --git a/mediagoblin/media_types/blog/models.py b/mediagoblin/media_types/blog/models.py
index 7c55e359..0e1ddf97 100644
--- a/mediagoblin/media_types/blog/models.py
+++ b/mediagoblin/media_types/blog/models.py
@@ -34,6 +34,7 @@ class BlogMixin(GenerateSlugMixin):
def check_slug_used(self, slug):
return check_blog_slug_used(self.author, slug, self.id)
+
class Blog(Base, BlogMixin):
__tablename__ = "mediatype__blogs"
id = Column(Integer, primary_key=True)
@@ -42,7 +43,10 @@ class Blog(Base, BlogMixin):
author = Column(Integer, ForeignKey(User.id), nullable=False, index=True) #similar to uploader
created = Column(DateTime, nullable=False, default=datetime.datetime.now, index=True)
slug = Column(Unicode)
-
+
+ @property
+ def slug_or_id(self):
+ return (self.slug or u'blog_{0}'.format(self.id))
def get_all_blog_posts(self, state=None):
blog_posts = Session.query(MediaEntry).join(BlogPostData)\
diff --git a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
index 8d7a405e..0013f1a3 100644
--- a/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
+++ b/mediagoblin/media_types/blog/templates/mediagoblin/blog/blog_post_listing.html
@@ -59,7 +59,7 @@
<br/>
<br/>
{% set blog_about_url = request.urlgen('mediagoblin.media_types.blog.blog_about',
- blog_slug=blog.slug, user=blog_owner_name) %}
+ blog_slug=blog.slug_or_id, user=blog_owner_name) %}
<a style="text-decoration:underline" href="{{ blog_about_url}}">About Blog</a>
<br/>
{{ render_pagination(request, pagination) }}
diff --git a/mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html b/mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html
index f19a9225..8c16daeb 100644
--- a/mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html
+++ b/mediagoblin/media_types/blog/templates/mediagoblin/blog/list_of_blogs.html
@@ -32,14 +32,14 @@
<table id="blogs_list">
{% for blog in blogs %}
{% set others_blog_url = request.urlgen('mediagoblin.media_types.blog.blog_post_listing',
- blog_slug=blog.slug, user=user.username) %}
+ blog_slug=blog.slug_or_id, user=user.username) %}
<tr>
{% if not request.user or request.user.username != user.username%}
<td><a href="{{ others_blog_url }}">{{ blog.title }}</a></td>
{% else %}
{% set my_blog_url = request.urlgen('mediagoblin.media_types.blog.blog-dashboard',
- blog_slug=blog.slug, user=request.user.username) %}
+ blog_slug=blog.slug_or_id, user=request.user.username) %}
<td><a href="{{ my_blog_url }}">{{ blog.title }}</a></td>
{% endif %}
<td>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;</td>
diff --git a/mediagoblin/media_types/blog/views.py b/mediagoblin/media_types/blog/views.py
index 042881e4..a367bef8 100644
--- a/mediagoblin/media_types/blog/views.py
+++ b/mediagoblin/media_types/blog/views.py
@@ -26,7 +26,9 @@ from mediagoblin import mg_globals
from mediagoblin.media_types.blog import forms as blog_forms
from mediagoblin.media_types.blog.models import Blog, BlogPostData
-from mediagoblin.media_types.blog.lib import may_edit_blogpost, set_blogpost_state, get_all_blogposts_of_blog
+from mediagoblin.media_types.blog.lib import (
+ may_edit_blogpost, set_blogpost_state, get_all_blogposts_of_blog,
+ get_blog_by_slug)
from mediagoblin.messages import add_message, SUCCESS, ERROR
from mediagoblin.decorators import (require_active_login, active_user_from_url,
@@ -91,7 +93,7 @@ def blog_edit(request):
#Blog already exists.
else:
- blog = request.db.Blog.query.filter_by(slug=blog_slug).first()
+ blog = get_blog_by_slug(request, blog_slug)
if not blog:
return render_404(request)
if request.method == 'GET':
@@ -129,8 +131,7 @@ def blogpost_create(request):
if request.method == 'POST' and form.validate():
blog_slug = request.matchdict.get('blog_slug')
- blog = request.db.Blog.query.filter_by(slug=blog_slug,
- author=request.user.id).first()
+ blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
if not blog:
return render_404(request)
@@ -173,7 +174,7 @@ def blogpost_edit(request):
blog_post_slug = request.matchdict.get('blog_post_slug', None)
blogpost = request.db.MediaEntry.query.filter_by(slug=blog_post_slug, uploader=request.user.id).first()
- blog = request.db.Blog.query.filter_by(slug=blog_slug, author=request.user.id).first()
+ blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
if not blogpost or not blog:
return render_404(request)
@@ -222,7 +223,7 @@ def blog_dashboard(request, page, url_user=None):
max_blog_count = config['max_blog_count']
if request.user and (request.user.id == url_user.id or request.user.has_privilege(u'admin')):
if blog_slug:
- blog = blogs.filter(Blog.slug==blog_slug).first()
+ blog = get_blog_by_slug(request, blog_slug)
if not blog:
return render_404(request)
else:
@@ -259,7 +260,7 @@ def blog_post_listing(request, page, url_user=None):
Page, listing all the blog posts of a particular blog.
"""
blog_slug = request.matchdict.get('blog_slug', None)
- blog = request.db.Blog.query.filter_by(slug=blog_slug).first()
+ blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
if not blog:
return render_404(request)
@@ -280,12 +281,10 @@ def blog_post_listing(request, page, url_user=None):
@require_active_login
def draft_view(request):
-
blog_slug = request.matchdict.get('blog_slug', None)
blog_post_slug = request.matchdict.get('blog_post_slug', None)
user = request.matchdict.get('user')
-
- blog = request.db.Blog.query.filter_by(author=request.user.id, slug=blog_slug).first()
+ blog = get_blog_by_slug(request, blog_slug, author=request.user.id)
blogpost = request.db.MediaEntry.query.filter_by(state = u'failed', uploader=request.user.id, slug=blog_post_slug).first()
if not blog or not blogpost:
@@ -308,7 +307,7 @@ def blog_delete(request, **kwargs):
owner_user = request.db.User.query.filter_by(username=url_user).first()
blog_slug = request.matchdict.get('blog_slug', None)
- blog = request.db.Blog.query.filter_by(slug=blog_slug, author=owner_user.id).first()
+ blog = get_blog_by_slug(request, blog_slug, author=owner_user.id)
if not blog:
return render_404(reequest)
@@ -355,7 +354,7 @@ def blog_about_view(request):
url_user = request.matchdict.get('user', None)
user = request.db.User.query.filter_by(username=url_user).first()
- blog = request.db.Blog.query.filter_by(author=user.id, slug=blog_slug).first()
+ blog = get_blog_by_slug(request, blog_slug, author=user.id)
if not user or not blog:
return render_404(request)