Ticket #44: 0001-Improve-user-homepage.patch.1

File 0001-Improve-user-homepage.patch.1, 3.8 KB (added by Sebastian Spaeth, 13 years ago)

0001-Improve-user-homepage.patch

Line 
1From 1dc710ecd3b1d94362981f86bc59c3c44e9f997b Mon Sep 17 00:00:00 2001
2From: Sebastian Spaeth <Sebastian@SSpaeth.de>
3Date: Wed, 11 May 2011 08:39:57 +0200
4Subject: [PATCH] Improve user homepage
5
61) Only consider user's with 'status': 'active'. We don't want to
7 display unconfirmed/blocked users, right?
82) Actually query user's media in the view and display on their home
9 page.
103) Throw an error 404 if we don't find a valid user, rather than saying,
11 "User not found" (from within the template).
124) Pass in medias as media_entries to remain compatible with the 'root'
13 page.
14
15Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
16---
17 .../templates/mediagoblin/user_pages/user.html | 15 +++++++++++-
18 mediagoblin/user_pages/views.py | 25 ++++++++++++-------
19 2 files changed, 30 insertions(+), 10 deletions(-)
20
21diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html
22index 4fa8443..85f05e0 100644
23--- a/mediagoblin/templates/mediagoblin/user_pages/user.html
24+++ b/mediagoblin/templates/mediagoblin/user_pages/user.html
25@@ -19,8 +19,21 @@
26 {% block mediagoblin_content -%}
27 {% if user %}
28 <h2>User page for '{{ user.username }}'</h2>
29- {{ user }}
30+
31+ {#- Should we outsource such a media 'gallery' view to it's own file?
32+ It could be useful for the home page and other views too -#}
33+ <ul>
34+ {%- for entry in media_entries %}
35+ <li>
36+ <a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
37+ user= entry.uploader.username, m_id= entry._id) }}">
38+ <img src="{{ request.app.public_store.file_url(
39+ entry['media_files']['thumb']) }}" /></a>
40+ </li>
41+ {%- endfor %}
42+ </ul>
43 {% else %}
44+ {# This *should* not occur as the view makes sure we pass in a user. #}
45 <p>Sorry, no such user found.<p/>
46 {% endif %}
47 {% endblock %}
48diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
49index cc613c4..2c9792f 100644
50--- a/mediagoblin/user_pages/views.py
51+++ b/mediagoblin/user_pages/views.py
52@@ -14,17 +14,22 @@
53 # You should have received a copy of the GNU Affero General Public License
54 # along with this program. If not, see <http://www.gnu.org/licenses/>.
55
56-from webob import Response
57+from webob import Response, exc
58 from mongokit import ObjectId
59 import wtforms
60
61
62 def user_home(request):
63 """'Homepage' of a User()"""
64- user = request.db.User.find_one(
65- {'username': request.matchdict['user']})
66+ user = request.db.User.find_one({
67+ 'username': request.matchdict['user'],
68+ 'status': 'active'})
69+ if not user:
70+ return exc.HTTPNotFound()
71
72- medias = request.db.MediaEntry.find()
73+ medias = request.db.MediaEntry.find({
74+ 'uploader': user,
75+ 'state': 'processed'})
76
77 template = request.template_env.get_template(
78 'mediagoblin/user_pages/user.html')
79@@ -32,16 +37,18 @@ def user_home(request):
80 template.render(
81 {'request': request,
82 'user': user,
83- 'medias': medias}))
84+ 'media_entries': medias}))
85
86
87 def media_home(request):
88 """'Homepage' of a MediaEntry()"""
89- media = request.db.MediaEntry.find_one(
90- ObjectId(request.matchdict['m_id']))
91+ media = request.db.MediaEntry.find_one({
92+ '_id': ObjectId(request.matchdict['m_id']),
93+ 'state': 'processed'})
94
95- #check that media uploader and user correspond
96- if media['uploader'].get('username') != request.matchdict['user']:
97+ # Check that media uploader and user correspond.
98+ if not media or \
99+ media['uploader'].get('username') != request.matchdict['user']:
100 return exc.HTTPNotFound()
101
102 template = request.template_env.get_template(
103--
1041.7.4.1
105