1 # GNU MediaGoblin -- federated, autonomous media hosting
2 # Copyright (C) 2011 Free Software Foundation, Inc
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.
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.
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/>.
17 from webob
import Response
, exc
18 from mediagoblin
.db
.util
import ObjectId
, DESCENDING
19 from mediagoblin
.util
import Pagination
21 from mediagoblin
.decorators
import uses_pagination
24 def user_home(request
):
25 """'Homepage' of a User()"""
26 user
= request
.db
.User
.find_one({
27 'username': request
.matchdict
['user'],
30 return exc
.HTTPNotFound()
32 cursor
= request
.db
.MediaEntry \
33 .find({'uploader': user
, 'state': 'processed'}) \
34 .sort('created', DESCENDING
)
37 pagination
= Pagination( int(request
.str_GET
['page']), cursor
)
38 media_entries
= pagination()
40 #if no data is available, return NotFound
41 if media_entries
== None:
42 return exc
.HTTPNotFound()
44 template
= request
.template_env
.get_template(
45 'mediagoblin/user_pages/user.html')
51 'media_entries': media_entries
,
52 'pagination': pagination
}))
54 def media_home(request
):
55 """'Homepage' of a MediaEntry()"""
56 media
= request
.db
.MediaEntry
.find_one({
57 '_id': ObjectId(request
.matchdict
['m_id']),
58 'state': 'processed'})
60 # Check that media uploader and user correspond.
62 media
['uploader'].get('username') != request
.matchdict
['user']:
63 return exc
.HTTPNotFound()
65 template
= request
.template_env
.get_template(
66 'mediagoblin/user_pages/media.html')