From: Bernhard Keller Date: Mon, 23 May 2011 17:00:46 +0000 (+0200) Subject: modified atomfeed feature, corrected spacing, url generation, routing id X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=00c39256145127b9a0f34f4fdc525412065f9426;p=mediagoblin.git modified atomfeed feature, corrected spacing, url generation, routing id --- diff --git a/mediagoblin/templates/mediagoblin/base.html b/mediagoblin/templates/mediagoblin/base.html index 4b634cf1..c4bc1364 100644 --- a/mediagoblin/templates/mediagoblin/base.html +++ b/mediagoblin/templates/mediagoblin/base.html @@ -20,6 +20,8 @@ {% block title %}MediaGoblin{% endblock title %} + {% block mediagoblin_head %} + {% endblock mediagoblin_head %} diff --git a/mediagoblin/templates/mediagoblin/user_pages/user.html b/mediagoblin/templates/mediagoblin/user_pages/user.html index d1809e80..2d09f685 100644 --- a/mediagoblin/templates/mediagoblin/user_pages/user.html +++ b/mediagoblin/templates/mediagoblin/user_pages/user.html @@ -16,6 +16,14 @@ # along with this program. If not, see . #} {% extends "mediagoblin/base.html" %} + +{% block mediagoblin_head %} + +{% endblock mediagoblin_head %} + {% block mediagoblin_content -%} {% if user %}

User page for '{{ user.username }}'

@@ -25,6 +33,9 @@ {% include "mediagoblin/utils/object_gallery.html" %} + atom feed {% else %} {# This *should* not occur as the view makes sure we pass in a user. #}

Sorry, no such user found.

diff --git a/mediagoblin/user_pages/routing.py b/mediagoblin/user_pages/routing.py index 8b535d13..96f97427 100644 --- a/mediagoblin/user_pages/routing.py +++ b/mediagoblin/user_pages/routing.py @@ -21,4 +21,6 @@ user_routes = [ controller="mediagoblin.user_pages.views:user_home"), Route('mediagoblin.user_pages.media_home', '/{user}/m/{media}/', requirements=dict(m_id="[0-9a-fA-F]{24}"), - controller="mediagoblin.user_pages.views:media_home")] + controller="mediagoblin.user_pages.views:media_home"), + Route('mediagoblin.user_pages.atom_feed', '/{user}/atom/', + controller="mediagoblin.user_pages.views:atom_feed")] diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py index 41bdb402..cc9c7b21 100644 --- a/mediagoblin/user_pages/views.py +++ b/mediagoblin/user_pages/views.py @@ -20,6 +20,7 @@ from mediagoblin.util import Pagination from mediagoblin.decorators import uses_pagination, get_user_media_entry +from werkzeug.contrib.atom import AtomFeed @uses_pagination def user_home(request, page): @@ -61,3 +62,36 @@ def media_home(request, media): template.render( {'request': request, 'media': media})) + +ATOM_DEFAULT_NR_OF_UPDATED_ITEMS = 5 + +def atom_feed(request): + """ + generates the atom feed with the newest images + """ + + user = request.db.User.find_one({ + 'username': request.matchdict['user'], + 'status': 'active'}) + if not user: + return exc.HTTPNotFound() + + cursor = request.db.MediaEntry.find({ + 'uploader': user['_id'], + 'state': 'processed'}) \ + .sort('created', DESCENDING) \ + .limit(ATOM_DEFAULT_NR_OF_UPDATED_ITEMS) + + feed = AtomFeed(request.matchdict['user'], + feed_url=request.url, + url=request.host_url) + + for entry in cursor: + feed.add(entry.get('title'), + entry.get('description'), + content_type='html', + author=request.matchdict['user'], + updated=entry.get('created'), + url=entry.url_for_self(request.urlgen)) + + return feed.get_response()