diff options
author | Sebastian Spaeth <Sebastian@SSpaeth.de> | 2011-05-11 08:39:57 +0200 |
---|---|---|
committer | Christopher Allan Webber <cwebber@dustycloud.org> | 2011-05-12 23:10:21 -0500 |
commit | 7acdbfd36457720789c183260424e0f78139211a (patch) | |
tree | 32d41524cefc9103cf7f5f55fda824f7dbdbb518 /mediagoblin | |
parent | b77eec653df14059296fc3185ff9817edfa0825b (diff) | |
download | mediagoblin-7acdbfd36457720789c183260424e0f78139211a.tar.lz mediagoblin-7acdbfd36457720789c183260424e0f78139211a.tar.xz mediagoblin-7acdbfd36457720789c183260424e0f78139211a.zip |
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>
Diffstat (limited to 'mediagoblin')
-rw-r--r-- | mediagoblin/templates/mediagoblin/user_pages/user.html | 15 | ||||
-rw-r--r-- | mediagoblin/user_pages/views.py | 25 |
2 files changed, 30 insertions, 10 deletions
diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html index 4fa84430..85f05e08 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 cc613c40..2c9792fa 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -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( |