pass in page number in uses_pagination view via keyword argument so ordering doesn...
[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
1301a8ad 23
3eb6fc4f 24@uses_pagination
1301a8ad 25def user_home(request, page):
9a16e16f 26 """'Homepage' of a User()"""
7acdbfd3
SS
27 user = request.db.User.find_one({
28 'username': request.matchdict['user'],
29 'status': 'active'})
30 if not user:
31 return exc.HTTPNotFound()
9a16e16f 32
434b3221
CAW
33 cursor = request.db.MediaEntry.find(
34 {'uploader': user,
35 'state': 'processed'}).sort('created', DESCENDING)
9a16e16f 36
1301a8ad 37 pagination = Pagination(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
434b3221 54
9a16e16f
SS
55def media_home(request):
56 """'Homepage' of a MediaEntry()"""
7acdbfd3
SS
57 media = request.db.MediaEntry.find_one({
58 '_id': ObjectId(request.matchdict['m_id']),
59 'state': 'processed'})
9a16e16f 60
7acdbfd3
SS
61 # Check that media uploader and user correspond.
62 if not media or \
63 media['uploader'].get('username') != request.matchdict['user']:
f6249408 64 return exc.HTTPNotFound()
9a16e16f
SS
65
66 template = request.template_env.get_template(
67 'mediagoblin/user_pages/media.html')
68 return Response(
69 template.render(
70 {'request': request,
71 'media': media}))
ae85ed0f 72