Implement user's tag filtered gallery page
tags used to be global, you could only browse media by tag for all users. This patch implements a view that allows us to browse only a user's tagged media. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
69b5623552
commit
f2c0bf3e34
@ -39,7 +39,8 @@
|
|||||||
'mediagoblin.user_pages.user_home',
|
'mediagoblin.user_pages.user_home',
|
||||||
user=user.username) -%}
|
user=user.username) -%}
|
||||||
<a href="{{ user_url }}">{{ username }}</a>'s media
|
<a href="{{ user_url }}">{{ username }}</a>'s media
|
||||||
{%- endtrans %}
|
{%- endtrans %}{% if tag %}{% trans %} with tag '{{tag}}'{% endtrans %}
|
||||||
|
{%- endif %}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
{{ object_gallery(request, media_entries, pagination) }}
|
{{ object_gallery(request, media_entries, pagination) }}
|
||||||
|
@ -40,6 +40,11 @@ add_route('mediagoblin.user_pages.media_home.view_comment',
|
|||||||
'/u/<string:user>/m/<string:media>/c/<int:comment>/',
|
'/u/<string:user>/m/<string:media>/c/<int:comment>/',
|
||||||
'mediagoblin.user_pages.views:media_home')
|
'mediagoblin.user_pages.views:media_home')
|
||||||
|
|
||||||
|
# User's tags gallery
|
||||||
|
add_route('mediagoblin.user_pages.user_gallery',
|
||||||
|
'/u/<string:user>/tag/<string:tag>/',
|
||||||
|
'mediagoblin.user_pages.views:user_gallery')
|
||||||
|
|
||||||
add_route('mediagoblin.user_pages.atom_feed',
|
add_route('mediagoblin.user_pages.atom_feed',
|
||||||
'/u/<string:user>/atom/',
|
'/u/<string:user>/atom/',
|
||||||
'mediagoblin.user_pages.views:atom_feed')
|
'mediagoblin.user_pages.views:atom_feed')
|
||||||
|
@ -18,8 +18,8 @@ import logging
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
from mediagoblin import messages, mg_globals
|
from mediagoblin import messages, mg_globals
|
||||||
from mediagoblin.db.models import (MediaEntry, Collection, CollectionItem,
|
from mediagoblin.db.models import (MediaEntry, MediaTag, Collection,
|
||||||
User)
|
CollectionItem, User)
|
||||||
from mediagoblin.tools.response import render_to_response, render_404, redirect
|
from mediagoblin.tools.response import render_to_response, render_404, redirect
|
||||||
from mediagoblin.tools.translate import pass_to_ugettext as _
|
from mediagoblin.tools.translate import pass_to_ugettext as _
|
||||||
from mediagoblin.tools.pagination import Pagination
|
from mediagoblin.tools.pagination import Pagination
|
||||||
@ -81,10 +81,17 @@ def user_home(request, page):
|
|||||||
@uses_pagination
|
@uses_pagination
|
||||||
def user_gallery(request, page, url_user=None):
|
def user_gallery(request, page, url_user=None):
|
||||||
"""'Gallery' of a User()"""
|
"""'Gallery' of a User()"""
|
||||||
|
tag = request.matchdict.get('tag', None)
|
||||||
cursor = MediaEntry.query.filter_by(
|
cursor = MediaEntry.query.filter_by(
|
||||||
uploader=url_user.id,
|
uploader=url_user.id,
|
||||||
state=u'processed').order_by(MediaEntry.created.desc())
|
state=u'processed').order_by(MediaEntry.created.desc())
|
||||||
|
|
||||||
|
# Filter potentially by tag too:
|
||||||
|
if tag:
|
||||||
|
cursor = cursor.filter(
|
||||||
|
MediaEntry.tags_helper.any(
|
||||||
|
MediaTag.name == request.matchdict['tag']))
|
||||||
|
|
||||||
# Paginate gallery
|
# Paginate gallery
|
||||||
pagination = Pagination(page, cursor)
|
pagination = Pagination(page, cursor)
|
||||||
media_entries = pagination()
|
media_entries = pagination()
|
||||||
@ -97,7 +104,7 @@ def user_gallery(request, page, url_user=None):
|
|||||||
return render_to_response(
|
return render_to_response(
|
||||||
request,
|
request,
|
||||||
'mediagoblin/user_pages/gallery.html',
|
'mediagoblin/user_pages/gallery.html',
|
||||||
{'user': url_user,
|
{'user': url_user, 'tag': tag,
|
||||||
'media_entries': media_entries,
|
'media_entries': media_entries,
|
||||||
'pagination': pagination})
|
'pagination': pagination})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user