Merge remote branch 'remotes/hanaku/pagination'
[mediagoblin.git] / mediagoblin / user_pages / views.py
CommitLineData
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 17from webob import Response, exc
254bc431 18from mediagoblin.db.util import ObjectId, DESCENDING
ca3ca51c 19from mediagoblin.util import Pagination
f6249408 20
3eb6fc4f 21from mediagoblin.decorators import uses_pagination
9a16e16f 22
3eb6fc4f 23@uses_pagination
9a16e16f
SS
24def 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
54def 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