aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/user_pages
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/user_pages')
-rw-r--r--mediagoblin/user_pages/routing.py9
-rw-r--r--mediagoblin/user_pages/views.py40
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