diff options
Diffstat (limited to 'mediagoblin/user_pages')
-rw-r--r-- | mediagoblin/user_pages/routing.py | 9 | ||||
-rw-r--r-- | mediagoblin/user_pages/views.py | 40 |
2 files changed, 34 insertions, 15 deletions
diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py index 2b228355..9cb665b5 100644 --- a/mediagoblin/user_pages/routing.py +++ b/mediagoblin/user_pages/routing.py @@ -40,12 +40,17 @@ add_route('mediagoblin.user_pages.media_home.view_comment', '/u/<string:user>/m/<string:media>/c/<int:comment>/', 'mediagoblin.user_pages.views:media_home') +# User's tags gallery +add_route('mediagoblin.user_pages.user_tag_gallery', + '/u/<string:user>/tag/<string:tag>/', + 'mediagoblin.user_pages.views:user_gallery') + add_route('mediagoblin.user_pages.atom_feed', '/u/<string:user>/atom/', 'mediagoblin.user_pages.views:atom_feed') add_route('mediagoblin.user_pages.media_collect', - '/u/<string:user>/m/<string:media>/collect/', + '/u/<string:user>/m/<int:media_id>/collect/', 'mediagoblin.user_pages.views:media_collect') add_route('mediagoblin.user_pages.collection_list', @@ -82,5 +87,5 @@ add_route('mediagoblin.edit.edit_media', 'mediagoblin.edit.views:edit_media') add_route('mediagoblin.edit.attachments', - '/u/<string:user>/m/<string:media>/attachments/', + '/u/<string:user>/m/<int:media_id>/attachments/', 'mediagoblin.edit.views:edit_attachments') diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index dea47fbf..bbc3259a 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -18,8 +18,8 @@ import logging import datetime from mediagoblin import messages, mg_globals -from mediagoblin.db.models import (MediaEntry, Collection, CollectionItem, - User) +from mediagoblin.db.models import (MediaEntry, MediaTag, Collection, + CollectionItem, User) 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 @@ -81,10 +81,17 @@ def user_home(request, page): @uses_pagination def user_gallery(request, page, url_user=None): """'Gallery' of a User()""" + tag = request.matchdict.get('tag', None) cursor = MediaEntry.query.filter_by( uploader=url_user.id, state=u'processed').order_by(MediaEntry.created.desc()) + # Filter potentially by tag too: + if tag: + cursor = cursor.filter( + MediaEntry.tags_helper.any( + MediaTag.slug == request.matchdict['tag'])) + # Paginate gallery pagination = Pagination(page, cursor) media_entries = pagination() @@ -97,7 +104,7 @@ def user_gallery(request, page, url_user=None): return render_to_response( request, 'mediagoblin/user_pages/gallery.html', - {'user': url_user, + {'user': url_user, 'tag': tag, 'media_entries': media_entries, 'pagination': pagination}) @@ -173,7 +180,7 @@ def media_post_comment(request, media): return redirect(request, location=media.url_for_self(request.urlgen)) -@get_user_media_entry +@get_media_entry_by_id @require_active_login def media_collect(request, media): """Add media to collection submission""" @@ -205,7 +212,7 @@ def media_collect(request, media): if existing_collection: messages.add_message(request, messages.ERROR, _('You already have a collection called "%s"!' - % collection.title)) + % existing_collection.title)) return redirect(request, "mediagoblin.user_pages.media_home", user=request.user.username, media=media.id) @@ -309,6 +316,9 @@ def user_collection(request, page, url_user=None): get_creator=url_user, slug=request.matchdict['collection']).first() + if not collection: + return render_404(request) + cursor = collection.get_collection_items() pagination = Pagination(page, cursor) @@ -515,6 +525,8 @@ def collection_atom_feed(request): collection = Collection.query.filter_by( creator=user.id, slug=request.matchdict['collection']).first() + if not collection: + return render_404(request) cursor = CollectionItem.query.filter_by( collection=collection.id) \ @@ -539,14 +551,16 @@ def collection_atom_feed(request): 'href': push_url}) feed = AtomFeed( - "MediaGoblin: Feed for %s's collection %s" % (request.matchdict['user'], collection.title), - feed_url=request.url, - id='tag:{host},{year}:collection.user-{user}.title-{title}'.format( - host=request.host, - year=datetime.datetime.today().strftime('%Y'), - user=request.matchdict['user'], - title=collection.title), - links=atomlinks) + "MediaGoblin: Feed for %s's collection %s" % + (request.matchdict['user'], collection.title), + feed_url=request.url, + id=u'tag:{host},{year}:gnu-mediagoblin.{user}.collection.{slug}'\ + .format( + host=request.host, + year=collection.created.strftime('%Y'), + user=request.matchdict['user'], + slug=collection.slug), + links=atomlinks) for item in cursor: entry = item.get_media_entry |