Commit | Line | Data |
---|---|---|
9a16e16f SS |
1 | # GNU MediaGoblin -- federated, autonomous media hosting |
2 | # Copyright (C) 2011 Free Software Foundation, Inc | |
3 | # | |
4 | # This program is free software: you can redistribute it and/or modify | |
5 | # it under the terms of the GNU Affero General Public License as published by | |
6 | # the Free Software Foundation, either version 3 of the License, or | |
7 | # (at your option) any later version. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU Affero General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
7acdbfd3 | 17 | from webob import Response, exc |
254bc431 | 18 | from mediagoblin.db.util import ObjectId, DESCENDING |
ca3ca51c | 19 | from mediagoblin.util import Pagination |
f6249408 | 20 | |
3eb6fc4f | 21 | from mediagoblin.decorators import uses_pagination |
9a16e16f | 22 | |
3eb6fc4f | 23 | @uses_pagination |
9a16e16f SS |
24 | def user_home(request): |
25 | """'Homepage' of a User()""" | |
7acdbfd3 SS |
26 | user = request.db.User.find_one({ |
27 | 'username': request.matchdict['user'], | |
28 | 'status': 'active'}) | |
29 | if not user: | |
30 | return exc.HTTPNotFound() | |
9a16e16f | 31 | |
ca3ca51c BK |
32 | cursor = request.db.MediaEntry \ |
33 | .find({'uploader': user, 'state': 'processed'}) \ | |
34 | .sort('created', DESCENDING) | |
3eb6fc4f | 35 | |
9a16e16f | 36 | |
3eb6fc4f | 37 | pagination = Pagination( int(request.str_GET['page']), cursor) |
ca3ca51c | 38 | media_entries = pagination() |
44e3e917 | 39 | |
ae85ed0f BK |
40 | #if no data is available, return NotFound |
41 | if media_entries == None: | |
42 | return exc.HTTPNotFound() | |
43 | ||
9a16e16f SS |
44 | template = request.template_env.get_template( |
45 | 'mediagoblin/user_pages/user.html') | |
ae85ed0f | 46 | |
9a16e16f SS |
47 | return Response( |
48 | template.render( | |
49 | {'request': request, | |
50 | 'user': user, | |
ae85ed0f BK |
51 | 'media_entries': media_entries, |
52 | 'pagination': pagination})) | |
f6249408 | 53 | |
9a16e16f SS |
54 | def media_home(request): |
55 | """'Homepage' of a MediaEntry()""" | |
7acdbfd3 SS |
56 | media = request.db.MediaEntry.find_one({ |
57 | '_id': ObjectId(request.matchdict['m_id']), | |
58 | 'state': 'processed'}) | |
9a16e16f | 59 | |
7acdbfd3 SS |
60 | # Check that media uploader and user correspond. |
61 | if not media or \ | |
62 | media['uploader'].get('username') != request.matchdict['user']: | |
f6249408 | 63 | return exc.HTTPNotFound() |
9a16e16f SS |
64 | |
65 | template = request.template_env.get_template( | |
66 | 'mediagoblin/user_pages/media.html') | |
67 | return Response( | |
68 | template.render( | |
69 | {'request': request, | |
70 | 'media': media})) | |
ae85ed0f | 71 |