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:
Sebastian Spaeth 2011-05-11 08:39:57 +02:00 committed by Christopher Allan Webber
parent b77eec653d
commit 7acdbfd364
2 changed files with 30 additions and 10 deletions

View File

@ -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 %}

View File

@ -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(