Improve user homepage
1) Only consider user's with 'status': 'active'. We don't want to display unconfirmed/blocked users, right? 2) Actually query user's media in the view and display on their home page. 3) Throw an error 404 if we don't find a valid user, rather than saying, "User not found" (from within the template). 4) Pass in medias as media_entries to remain compatible with the 'root' page. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
parent
b77eec653d
commit
7acdbfd364
@ -19,8 +19,21 @@
|
||||
{% block mediagoblin_content -%}
|
||||
{% if user %}
|
||||
<h2>User page for '{{ user.username }}'</h2>
|
||||
{{ user }}
|
||||
|
||||
{#- Should we outsource such a media 'gallery' view to it's own file?
|
||||
It could be useful for the home page and other views too -#}
|
||||
<ul>
|
||||
{%- for entry in media_entries %}
|
||||
<li>
|
||||
<a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
|
||||
user= entry.uploader.username, m_id= entry._id) }}">
|
||||
<img src="{{ request.app.public_store.file_url(
|
||||
entry['media_files']['thumb']) }}" /></a>
|
||||
</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
{# This *should* not occur as the view makes sure we pass in a user. #}
|
||||
<p>Sorry, no such user found.<p/>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
@ -14,17 +14,22 @@
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from webob import Response
|
||||
from webob import Response, exc
|
||||
from mongokit import ObjectId
|
||||
import wtforms
|
||||
|
||||
|
||||
def user_home(request):
|
||||
"""'Homepage' of a User()"""
|
||||
user = request.db.User.find_one(
|
||||
{'username': request.matchdict['user']})
|
||||
user = request.db.User.find_one({
|
||||
'username': request.matchdict['user'],
|
||||
'status': 'active'})
|
||||
if not user:
|
||||
return exc.HTTPNotFound()
|
||||
|
||||
medias = request.db.MediaEntry.find()
|
||||
medias = request.db.MediaEntry.find({
|
||||
'uploader': user,
|
||||
'state': 'processed'})
|
||||
|
||||
template = request.template_env.get_template(
|
||||
'mediagoblin/user_pages/user.html')
|
||||
@ -32,16 +37,18 @@ def user_home(request):
|
||||
template.render(
|
||||
{'request': request,
|
||||
'user': user,
|
||||
'medias': medias}))
|
||||
'media_entries': medias}))
|
||||
|
||||
|
||||
def media_home(request):
|
||||
"""'Homepage' of a MediaEntry()"""
|
||||
media = request.db.MediaEntry.find_one(
|
||||
ObjectId(request.matchdict['m_id']))
|
||||
media = request.db.MediaEntry.find_one({
|
||||
'_id': ObjectId(request.matchdict['m_id']),
|
||||
'state': 'processed'})
|
||||
|
||||
#check that media uploader and user correspond
|
||||
if media['uploader'].get('username') != request.matchdict['user']:
|
||||
# Check that media uploader and user correspond.
|
||||
if not media or \
|
||||
media['uploader'].get('username') != request.matchdict['user']:
|
||||
return exc.HTTPNotFound()
|
||||
|
||||
template = request.template_env.get_template(
|
||||
|
Loading…
x
Reference in New Issue
Block a user