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()