From 2db0ec2cc3b5269e19bf883c5adc927e6ab1b696 Mon Sep 17 00:00:00 2001
From: Sebastian Spaeth <Sebastian@SSpaeth.de>
Date: Wed, 11 May 2011 08:39:57 +0200
Subject: [PATCH] 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>
---
 .../templates/mediagoblin/user_pages/user.html     |   15 ++++++++++++++-
 mediagoblin/user_pages/views.py                    |   12 +++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
index 4fa8443..85f05e0 100644
--- a/mediagoblin/templates/mediagoblin/user_pages/user.html
+++ b/mediagoblin/templates/mediagoblin/user_pages/user.html
@@ -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 %}    
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index cc613c4..6b0e03c 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -14,7 +14,7 @@
 # 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
 
@@ -22,9 +22,11 @@ import wtforms
 def user_home(request):
     """'Homepage' of a User()"""
     user = request.db.User.find_one(
-        {'username': request.matchdict['user']})
+        {'username': request.matchdict['user'], 'status': 'active'})
+    if not user:
+        return exc.HTTPNotFound()
 
-    medias = request.db.MediaEntry.find()
+    medias = request.db.MediaEntry.find({'uploader': user})
 
     template = request.template_env.get_template(
         'mediagoblin/user_pages/user.html')
@@ -32,7 +34,7 @@ def user_home(request):
         template.render(
             {'request': request,
              'user': user,
-             'medias': medias}))
+             'media_entries': medias}))
 
 
 def media_home(request):
@@ -40,7 +42,7 @@ def media_home(request):
     media = request.db.MediaEntry.find_one(
         ObjectId(request.matchdict['m_id']))
 
-    #check that media uploader and user correspond
+    # Check that media uploader and user correspond.
     if media['uploader'].get('username') != request.matchdict['user']:
         return exc.HTTPNotFound()
 
-- 
1.7.4.1

