from mediagoblin.auth.routing import auth_routes
from mediagoblin.submit.routing import submit_routes
-
+from mediagoblin.user_pages.routing import user_routes
def get_mapper():
mapping = Mapper()
mapping.extend(auth_routes, '/auth')
mapping.extend(submit_routes, '/submit')
+ mapping.extend(user_routes, '/u')
return mapping
--- /dev/null
+{#
+# 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/>.
+#}
+{% extends "mediagoblin/base.html" %}
+{% block mediagoblin_content %}
+
+ {# temporarily, an "image gallery" that isn't one really ;) #}
+ {% if media %}
+ <h2>Media details for {{media.title}}</h2>
+ <div>
+ <img src="{{ request.app.public_store.file_url(
+ media.media_files.main) }}" />
+
+ <br/>Uploaded: {{ media.created}}
+ <br/>Description: {{media.description}}
+ </div>
+ {% else %}
+ <p>Sorry, no such media found.<p/>
+ {% endif %}
+{% endblock %}
<ul>
{% for entry in media_entries %}
<li>
- <img src="{{ request.app.public_store.file_url(
- entry['media_files']['thumb']) }}" />
+ <a href="{{ request.urlgen('mediagoblin.user_pages.media_home',
+ user= entry.uploader.username, m_id= entry._id) }}">
+ <img src="{{ request.app.public_store.file_url(
+ entry['media_files']['thumb']) }}" /></a>
</li>
{% endfor %}
</ul>
--- /dev/null
+{#
+# 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/>.
+#}
+{% extends "mediagoblin/base.html" %}
+{% block mediagoblin_content %}
+
+ {# temporarily, an "image gallery" that isn't one really ;) #}
+ {% if media %}
+ <h2>Media details for <a
+ href="{{ request.urlgen('mediagoblin.user_pages.user_home',
+ user= media.uploader.username) }}">{{media.uploader.username}}</a>
+ / {{media.title}}
+ </h2>
+ <div>
+ <img src="{{ request.app.public_store.file_url(
+ media.media_files.main) }}" />
+
+ <br/>Uploaded on {{ "%4d-%02d-%02d"|format(media.created.year,
+ media.created.month,media.created.day)}} by <a
+ href="{{ request.urlgen('mediagoblin.user_pages.user_home',
+ user= media.uploader.username) }}">{{media.uploader.username}}</a>
+ <br/>Description: {{media.description}}
+ </div>
+ {% else %}
+ <p>Sorry, no such media found.<p/>
+ {% endif %}
+{% endblock %}
--- /dev/null
+{#
+# 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/>.
+#}
+{% extends "mediagoblin/base.html" %}
+{% block mediagoblin_content -%}
+ {% if user %}
+ <h2>User page for '{{user.username}}'</h2>
+ {{user}}
+ {% else %}
+ <p>Sorry, no such user found.<p/>
+ {% endif %}
+{% endblock %}
--- /dev/null
+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")]
--- /dev/null
+# 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}))
from webob import Response, exc
import wtforms
-
+from mongokit import ObjectId
from mediagoblin import models
def root_view(request):
media_entries = request.db.MediaEntry.find(
{u'state': u'processed'})
-
+
template = request.template_env.get_template(
'mediagoblin/root.html')
return Response(