From 749e9ce7ac3062bf8b46f5f3ef0a648951bc810a Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Wed, 5 May 2010 17:26:28 +0200 Subject: [PATCH] Added Atom feeds for snippets. --- flask_website/openid_auth.py | 6 ---- flask_website/templates/snippets/layout.html | 1 + flask_website/templates/snippets/show.html | 4 +++ flask_website/views/snippets.py | 32 ++++++++++++++++++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/flask_website/openid_auth.py b/flask_website/openid_auth.py index 427973b5..c16693e9 100644 --- a/flask_website/openid_auth.py +++ b/flask_website/openid_auth.py @@ -76,12 +76,6 @@ class WebsiteOpenIDStore(OpenIDStore): OpenIDAssociation.lifetime < int(time()) ).delete() - def getAuthKey(self): - return sha1(config.SECRET_KEY).hexdigest()[:self.AUTH_KEY_LEN] - - def isDump(self): - return False - def redirect_back(): return redirect(request.values.get('next') or url_for('general.index')) diff --git a/flask_website/templates/snippets/layout.html b/flask_website/templates/snippets/layout.html index cb525769..800c1cb9 100644 --- a/flask_website/templates/snippets/layout.html +++ b/flask_website/templates/snippets/layout.html @@ -1,6 +1,7 @@ {% extends "layout.html" %} {% block head %} {{ super() }} + diff --git a/flask_website/templates/snippets/show.html b/flask_website/templates/snippets/show.html index fec67d8b..16c7f0fe 100644 --- a/flask_website/templates/snippets/show.html +++ b/flask_website/templates/snippets/show.html @@ -1,5 +1,9 @@ {% extends "snippets/layout.html" %} {% block title %}{{ snippet.title }}{% endblock %} +{% block head %} + {{ super() }} + +{% endblock %} {% block body %}

{{ snippet.title }}

By {{ snippet.author.name }} diff --git a/flask_website/views/snippets.py b/flask_website/views/snippets.py index 57216d67..782ecf7c 100644 --- a/flask_website/views/snippets.py +++ b/flask_website/views/snippets.py @@ -1,5 +1,8 @@ +# -*- coding: utf-8 -*- +from urlparse import urljoin from flask import Module, render_template, request, flash, abort, redirect, \ g, url_for +from werkzeug.contrib.atom import AtomFeed from flask_website.utils import requires_login, format_creole from flask_website.database import Category, Snippet, Comment, db_session @@ -112,3 +115,32 @@ def category(slug): snippets = category.snippets.order_by(Snippet.title).all() return render_template('snippets/category.html', category=category, snippets=snippets) + + +@snippets.route('/recent.atom') +def recent_feed(): + feed = AtomFeed(u'Recent Flask Snippets', + subtitle=u'Recent additions to the Flask snippet archive', + feed_url=request.url, url=request.url_root) + snippets = Snippet.query.order_by(Snippet.pub_date.desc()).limit(15) + for snippet in snippets: + feed.add(snippet.title, unicode(snippet.rendered_body), + content_type='html', author=snippet.author.name, + url=urljoin(request.url_root, snippet.url), + updated=snippet.pub_date) + return feed.get_response() + + +@snippets.route('/snippets//comments.atom') +def comments_feed(id): + snippet = Snippet.query.get(id) + if snippet is None: + abort(404) + feed = AtomFeed(u'Comments for Snippet ā€œ%sā€' % snippet.title, + feed_url=request.url, url=request.url_root) + for comment in snippet.comments: + feed.add(comment.title or u'Untitled Comment', + unicode(snippet.rendered_text), + content_type='html', author=comment.author.name, + url=request.url, updated=comment.pub_date) + return feed.get_response()