Mercurial > hg > bitsyblog
diff bitsyblog/bitsyblog.py @ 35:7e7fbdc64cc1
enable atom support, this brings us to 2.0
author | k0s <k0scist@gmail.com> |
---|---|
date | Sun, 01 Nov 2009 13:30:18 -0500 |
parents | 2a43e43a7e4d |
children | 4b01f5bc84e6 |
line wrap: on
line diff
--- a/bitsyblog/bitsyblog.py Sun Nov 01 01:51:14 2009 -0400 +++ b/bitsyblog/bitsyblog.py Sun Nov 01 13:30:18 2009 -0500 @@ -25,14 +25,14 @@ import PyRSS2Gen import re -import utils # local import +import utils from blog import FileBlog from cStringIO import StringIO from docutils.utils import SystemMessage from genshi.builder import Markup from genshi.template import TemplateLoader -from lxml import etree +#from lxml import etree from markup.form import Form from paste.fileapp import FileApp from pkg_resources import resource_filename @@ -98,12 +98,13 @@ def __call__(self, environ, start_response): request = Request(environ) - # GENSHI: data dictionary + # genshi data dictionary request.environ['data'] = { 'site_name': self.site_name, 'request': request, 'link': self.link, 'logo': self.logo(request), - 'user_url': self.user_url } + 'user_url': self.user_url, + 'permalink': self.permalink } res = self.response_functions.get(request.method, self.error())(request) return res(environ, start_response) @@ -394,7 +395,7 @@ path = path[1:] if name: if name not in self.users: - exc.HTTPNotFound("No blog found for %s" % user) + exc.HTTPNotFound("No blog found for %s" % name) request.user = self.users[name] else: name = None @@ -623,17 +624,17 @@ retval = '<div class="blog-body">%s</div>' % body return retval - # this should be reenabled if 'system-message's again appear in the markup - try: - foo = etree.fromstring(retval) - except etree.XMLSyntaxError: - return retval - # should cleanup the <div class="system-message"> - for i in foo.getiterator(): - if dict(i.items()).get('class') == 'system-message': - i.clear() +# # XXX this should be reenabled if 'system-message's again appear in the markup +# try: +# foo = etree.fromstring(retval) +# except etree.XMLSyntaxError: +# return retval +# # should cleanup the <div class="system-message"> +# for i in foo.getiterator(): +# if dict(i.items()).get('class') == 'system-message': +# i.clear() - return etree.tostring(foo) +# return etree.tostring(foo) ### feeds @@ -689,39 +690,18 @@ def atom(self, request, blog, author=None): - retval = StringIO() - print >> retval, """<?xml version="1.0" encoding="utf-8"?> -<feed xmlns="http://www.w3.org/2005/Atom"> -""" - if author: - title = "%s's blog" % author - link = request.host_url + '/' + author - else: - title = self.site_name + ' - atom' - link = request.application_url - - date = blog[0].date.isoformat() - print >> retval, '<title>%s</title>' % title - print >> retval, '<link href="%s" />' % link - print >> retval, '<updated>%s</updated>' % date - if author: - print >> retval, """ - <author> - <name>%s</name> - </author>""" % author - - for entry in blog: - print >> retval, '<entry>' - print >> retval, '<title>%s</title>' % cgi.escape(entry.title()) - print >> retval, '<link href="%s" />' % self.permalink(entry) - print >> retval, '<updated>%s</updated>' % entry.date.isoformat() - print >> retval, '<summary>%s</summary>' % cgi.escape(entry.body) + # data for genshi template + date = blog[0].date.isoformat() + data = request.environ['data'] + data['blog'] = blog + data['author'] = author + data['date'] = date - print >> retval, '</entry>' - - print >> retval, '</feed>' - return retval.getvalue() + # render the template + template = self.loader.load('atom.xml') + return template.generate(**data).render() + ### forms