Initial RSS+Atom feeds.
This commit is contained in:
parent
30b11b1cc4
commit
e3cef7a4fd
@ -1,16 +1,57 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from pylons import request, response, session, tmpl_context as c
|
from feedformatter import Feed
|
||||||
from pylons.controllers.util import abort, redirect_to
|
import time
|
||||||
|
|
||||||
from scribeengine.lib.base import BaseController, render
|
from scribeengine.lib.base import *
|
||||||
|
from scribeengine.model.meta import Session
|
||||||
|
from scribeengine.model import Post, Variable
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
class FeedController(BaseController):
|
class FeedController(BaseController):
|
||||||
|
|
||||||
|
def _generate_feed(self):
|
||||||
|
blog_title = Session.query(Variable).get(u'blog title').value
|
||||||
|
blog_slogan = Session.query(Variable).get(u'blog slogan').value
|
||||||
|
blog_link = request.environ[u'HTTP_HOST']
|
||||||
|
if blog_link.endswith(u'/'):
|
||||||
|
blog_link = blog_link[:-1]
|
||||||
|
posts = Session.query(Post)\
|
||||||
|
.filter_by(status=u'published')\
|
||||||
|
.order_by(Post.created.desc())\
|
||||||
|
.all()
|
||||||
|
# Create the feed
|
||||||
|
feed = Feed()
|
||||||
|
# Set the feed/channel level properties
|
||||||
|
feed.feed[u'title'] = blog_title
|
||||||
|
feed.feed[u'link'] = blog_link + u'/'
|
||||||
|
#feed.feed[u'author'] = blog_author
|
||||||
|
feed.feed[u'description'] = blog_slogan
|
||||||
|
for post in posts:
|
||||||
|
# Create an item
|
||||||
|
item = {}
|
||||||
|
item[u'title'] = post.title
|
||||||
|
item[u'link'] = blog_link + h.url_for_post(post)
|
||||||
|
item[u'author'] = post.user.nick
|
||||||
|
item[u'description'] = post.body
|
||||||
|
item[u'pubDate'] = post.created.timetuple()
|
||||||
|
#item[u'guid'] = "1234567890"
|
||||||
|
# Add item to feed
|
||||||
|
feed.items.append(item)
|
||||||
|
return feed
|
||||||
|
|
||||||
def index(self):
|
def index(self):
|
||||||
# Return a rendered template
|
h.redirect_to('/')
|
||||||
#return render('/feed.mako')
|
|
||||||
# or, return a response
|
def rss(self, id=u'2.0'):
|
||||||
return 'Hello World'
|
feed = self._generate_feed()
|
||||||
|
if id == u'1.0':
|
||||||
|
return feed.format_rss1_string()
|
||||||
|
else:
|
||||||
|
return feed.format_rss2_string()
|
||||||
|
|
||||||
|
def atom(self):
|
||||||
|
feed = self._generate_feed()
|
||||||
|
return feed.format_atom_string()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user