aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/user_pages/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/user_pages/views.py')
-rw-r--r--mediagoblin/user_pages/views.py49
1 files changed, 20 insertions, 29 deletions
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index c26bd340..cbf3f15f 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -20,6 +20,7 @@ import datetime
from mediagoblin import messages, mg_globals
from mediagoblin.db.util import DESCENDING, ObjectId
+from mediagoblin.db.sql.models import MediaEntry, Collection, CollectionItem
from mediagoblin.tools.response import render_to_response, render_404, redirect
from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.pagination import Pagination
@@ -29,11 +30,10 @@ from mediagoblin.user_pages.lib import send_comment_email
from mediagoblin.decorators import (uses_pagination, get_user_media_entry,
require_active_login, user_may_delete_media, user_may_alter_collection,
- get_user_collection, get_user_collection_item)
+ get_user_collection, get_user_collection_item, active_user_from_url)
from werkzeug.contrib.atom import AtomFeed
-from mediagoblin.media_types import get_media_manager
_log = logging.getLogger(__name__)
_log.setLevel(logging.DEBUG)
@@ -76,30 +76,26 @@ def user_home(request, page):
'pagination': pagination})
+@active_user_from_url
@uses_pagination
-def user_gallery(request, page):
+def user_gallery(request, page, url_user=None):
"""'Gallery' of a User()"""
- user = request.db.User.find_one({
- 'username': request.matchdict['user'],
- 'status': u'active'})
- if not user:
- return render_404(request)
-
- cursor = request.db.MediaEntry.find(
- {'uploader': user._id,
- 'state': u'processed'}).sort('created', DESCENDING)
-
+ cursor = MediaEntry.query.filter_by(
+ uploader=url_user.id,
+ state=u'processed').order_by(MediaEntry.created.desc())
+ # Paginate gallery
pagination = Pagination(page, cursor)
media_entries = pagination()
#if no data is available, return NotFound
+ # TODO: Should we really also return 404 for empty galleries?
if media_entries == None:
return render_404(request)
return render_to_response(
request,
'mediagoblin/user_pages/gallery.html',
- {'user': user,
+ {'user': url_user,
'media_entries': media_entries,
'pagination': pagination})
@@ -128,8 +124,7 @@ def media_home(request, media, page, **kwargs):
comment_form = user_forms.MediaCommentForm(request.form)
- media_template_name = get_media_manager(
- media.media_type)['display_template']
+ media_template_name = media.media_manager['display_template']
return render_to_response(
request,
@@ -324,32 +319,28 @@ def media_confirm_delete(request, media):
'form': form})
+@active_user_from_url
@uses_pagination
-def user_collection(request, page):
+def user_collection(request, page, url_user=None):
"""A User-defined Collection"""
- user = request.db.User.find_one({
- 'username': request.matchdict['user'],
- 'status': u'active'})
- if not user:
- return render_404(request)
+ collection = Collection.query.filter_by(
+ get_creator=url_user,
+ slug=request.matchdict['collection']).first()
- collection = request.db.Collection.find_one(
- {'slug': request.matchdict['collection']})
-
- cursor = request.db.CollectionItem.find(
- {'collection': collection.id})
+ cursor = collection.get_collection_items()
pagination = Pagination(page, cursor)
collection_items = pagination()
- #if no data is available, return NotFound
+ # if no data is available, return NotFound
+ # TODO: Should an empty collection really also return 404?
if collection_items == None:
return render_404(request)
return render_to_response(
request,
'mediagoblin/user_pages/collection.html',
- {'user': user,
+ {'user': url_user,
'collection': collection,
'collection_items': collection_items,
'pagination': pagination})