MediaEntry slugs usable in URLs, & decorator that grabs media from the request

This commit is contained in:
Christopher Allan Webber
2011-05-20 17:47:36 -05:00
parent 3c2567ac76
commit 724933b154
3 changed files with 31 additions and 10 deletions

View File

@@ -19,6 +19,6 @@ from routes.route import Route
user_routes = [
Route('mediagoblin.user_pages.user_home', "/{user}/",
controller="mediagoblin.user_pages.views:user_home"),
Route('mediagoblin.user_pages.media_home', '/{user}/m/{m_id}/',
Route('mediagoblin.user_pages.media_home', '/{user}/m/{media}/',
requirements=dict(m_id="[0-9a-fA-F]{24}"),
controller="mediagoblin.user_pages.views:media_home")]

View File

@@ -18,7 +18,7 @@ from webob import Response, exc
from mediagoblin.db.util import ObjectId, DESCENDING
from mediagoblin.util import Pagination
from mediagoblin.decorators import uses_pagination
from mediagoblin.decorators import uses_pagination, get_media_entry
@uses_pagination
@@ -52,15 +52,11 @@ def user_home(request, page):
'pagination': pagination}))
def media_home(request):
@get_media_entry
def media_home(request, media):
"""'Homepage' of a MediaEntry()"""
media = request.db.MediaEntry.find_one({
'_id': ObjectId(request.matchdict['m_id']),
'state': 'processed'})
# Check that media uploader and user correspond.
if not media or \
media['uploader'].get('username') != request.matchdict['user']:
if media['uploader'].get('username') != request.matchdict['user']:
return exc.HTTPNotFound()
template = request.template_env.get_template(
@@ -69,4 +65,3 @@ def media_home(request):
template.render(
{'request': request,
'media': media}))