Added Atom feeds for snippets.

This commit is contained in:
Armin Ronacher 2010-05-05 17:26:28 +02:00
parent eac73e3dd4
commit 749e9ce7ac
4 changed files with 37 additions and 6 deletions

View file

@ -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'))

View file

@ -1,6 +1,7 @@
{% extends "layout.html" %}
{% block head %}
{{ super() }}
<link href="{{ url_for('recent_feed') }}" rel="alternate" title="Recent Flask Snippets" type="application/atom+xml">
<style type=text/css>
h1 { background-image: url(/static/snippets.png); }
</style>

View file

@ -1,5 +1,9 @@
{% extends "snippets/layout.html" %}
{% block title %}{{ snippet.title }}{% endblock %}
{% block head %}
{{ super() }}
<link href="{{ url_for('comments_feed', id=snippet.id) }}" rel="alternate" title="Snippet Comments" type="application/atom+xml">
{% endblock %}
{% block body %}
<h2>{{ snippet.title }}</h2>
<p class=snippet-author>By {{ snippet.author.name }}

View file

@ -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/<int:id>/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()