diff options
Diffstat (limited to 'mediagoblin/user_pages/views.py')
-rw-r--r-- | mediagoblin/user_pages/views.py | 49 |
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}) |