Implement simple media detail page
This patch creates a "homepage" for each media. The URL is /u/<username>/m/<objID>. On it we display the media and some details. It is ugly and lacking some stuff but it works. The only thing left to do is to throw an 404 error if the <username> and the media uploader don't correspond. - Also create a user "home page" while at it. It is merely a place holder for now though. - Link from the entries on the homepage, to the media pages, so we actually find them. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
committed by
Christopher Allan Webber
parent
9d97145fe4
commit
9a16e16ffa
0
mediagoblin/user_pages/__init__.py
Normal file
0
mediagoblin/user_pages/__init__.py
Normal file
24
mediagoblin/user_pages/routing.py
Normal file
24
mediagoblin/user_pages/routing.py
Normal file
@@ -0,0 +1,24 @@
|
||||
1# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011 Free Software Foundation, Inc
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from routes.route import Route
|
||||
|
||||
user_routes = [
|
||||
Route('mediagoblin.user_pages.user_home', "/{user}",
|
||||
controller="mediagoblin.user_pages.views:user_home"),
|
||||
Route('mediagoblin.user_pages.media_home', r'/{user}/m/{m_id}',
|
||||
requirements=dict(m_id="[0-9a-fA-F]{24}"),
|
||||
controller="mediagoblin.user_pages.views:media_home")]
|
||||
52
mediagoblin/user_pages/views.py
Normal file
52
mediagoblin/user_pages/views.py
Normal file
@@ -0,0 +1,52 @@
|
||||
# GNU MediaGoblin -- federated, autonomous media hosting
|
||||
# Copyright (C) 2011 Free Software Foundation, Inc
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from webob import Response
|
||||
from mongokit import ObjectId
|
||||
import wtforms
|
||||
#from mongokit import ObjectId
|
||||
|
||||
def user_home(request):
|
||||
"""'Homepage' of a User()"""
|
||||
user = request.db.User.find_one(
|
||||
{'username': request.matchdict['user']})
|
||||
|
||||
medias = request.db.MediaEntry.find()
|
||||
|
||||
template = request.template_env.get_template(
|
||||
'mediagoblin/user_pages/user.html')
|
||||
return Response(
|
||||
template.render(
|
||||
{'request': request,
|
||||
'user': user,
|
||||
'medias': medias}))
|
||||
|
||||
def media_home(request):
|
||||
"""'Homepage' of a MediaEntry()"""
|
||||
media = request.db.MediaEntry.find_one(
|
||||
ObjectId(request.matchdict['m_id']))
|
||||
|
||||
#check that media uploader and user correspondent
|
||||
if media['uploader'].get('username') != request.matchdict['user']:
|
||||
#TODO: How do I throw an error 404?
|
||||
pass
|
||||
|
||||
template = request.template_env.get_template(
|
||||
'mediagoblin/user_pages/media.html')
|
||||
return Response(
|
||||
template.render(
|
||||
{'request': request,
|
||||
'media': media}))
|
||||
Reference in New Issue
Block a user