summaryrefslogtreecommitdiff
path: root/site_builder/feeds.py
diff options
context:
space:
mode:
Diffstat (limited to 'site_builder/feeds.py')
-rw-r--r--site_builder/feeds.py67
1 files changed, 33 insertions, 34 deletions
diff --git a/site_builder/feeds.py b/site_builder/feeds.py
index 3279afb..dd343b5 100644
--- a/site_builder/feeds.py
+++ b/site_builder/feeds.py
@@ -6,14 +6,13 @@ Atom Feed Writer
6@date: June 04, 2010 6@date: June 04, 2010
7""" 7"""
8 8
9#from io import StringIO 9from io import StringIO
10from StringIO import StringIO
11from xml.sax.saxutils import XMLGenerator 10from xml.sax.saxutils import XMLGenerator
12 11
13 12
14class SimpleXMLGenerator(XMLGenerator): 13class SimpleXMLGenerator(XMLGenerator):
15 14
16 def __init__(self, encoding='utf-8'): 15 def __init__(self, encoding="utf-8"):
17 self.output = StringIO() 16 self.output = StringIO()
18 XMLGenerator.__init__(self, out=self.output, encoding=encoding) 17 XMLGenerator.__init__(self, out=self.output, encoding=encoding)
19 18
@@ -53,8 +52,8 @@ class Atom1Feed(object):
53 52
54 def get_feed(self): 53 def get_feed(self):
55 self.handler.startDocument() 54 self.handler.startDocument()
56 self.handler.startElement('feed', { 55 self.handler.startElement("feed", {
57 'xmlns': 'http://www.w3.org/2005/Atom' }) 56 "xmlns": "http://www.w3.org/2005/Atom" })
58 57
59 self.add_root_elements() 58 self.add_root_elements()
60 59
@@ -64,47 +63,47 @@ class Atom1Feed(object):
64 63
65 self.add_post(post) 64 self.add_post(post)
66 65
67 self.handler.endElement('feed') 66 self.handler.endElement("feed")
68 67
69 return self.handler.get_contents() 68 return self.handler.get_contents()
70 69
71 def add_root_elements(self): 70 def add_root_elements(self):
72 self.handler.addElement('title', self.title) 71 self.handler.addElement("title", self.title)
73 self.handler.addElement('updated', self._format_time(self.updated)) 72 self.handler.addElement("updated", self._format_time(self.updated))
74 self.handler.addElement('id', self.feed_url) 73 self.handler.addElement("id", self.feed_url)
75 self.handler.addElement('link', attrs={ 74 self.handler.addElement("link", attrs={
76 'rel': 'alternate', 75 "rel": "alternate",
77 'type': 'text/html', 76 "type": "text/html",
78 'href': self.blog_url }) 77 "href": self.blog_url })
79 self.handler.addElement('link', attrs={ 78 self.handler.addElement("link", attrs={
80 'rel': 'self', 79 "rel": "self",
81 'type': 'application/atom+xml', 80 "type": "application/atom+xml",
82 'href': self.feed_url }) 81 "href": self.feed_url })
83 82
84 def add_post(self, post): 83 def add_post(self, post):
85 handler = self.handler 84 handler = self.handler
86 85
87 handler.startElement('entry') 86 handler.startElement("entry")
88 87
89 handler.startElement('author') 88 handler.startElement("author")
90 handler.addElement('name', post.author.name) 89 handler.addElement("name", post.author.name)
91 handler.addElement('email', post.author.email) 90 handler.addElement("email", post.author.email)
92 handler.endElement('author') 91 handler.endElement("author")
93 92
94 post_href = '{0}/{1}'.format(self.blog_url, post.filename) 93 post_href = "{0}/{1}".format(self.blog_url, post.filename)
95 94
96 handler.addElement('title', post.title) 95 handler.addElement("title", post.title)
97 handler.addElement('link', attrs={ 96 handler.addElement("link", attrs={
98 'rel': 'alternate', 97 "rel": "alternate",
99 'type': 'text/html', 98 "type": "text/html",
100 'href': post_href }) 99 "href": post_href })
101 handler.addElement('id', post_href) 100 handler.addElement("id", post_href)
102 handler.addElement('updated', self._format_time(post.post_date)) 101 handler.addElement("updated", self._format_time(post.post_date))
103 handler.addElement('published', self._format_time(post.post_date)) 102 handler.addElement("published", self._format_time(post.post_date))
104 103
105 for tag in post.tags: 104 for tag in post.tags:
106 handler.addElement('category', attrs={ 'term': tag }) 105 handler.addElement("category", attrs={ "term": tag })
107 106
108 handler.addElement('content', post.contents, attrs={ 'type': 'html' }) 107 handler.addElement("content", post.contents, attrs={ "type": "html" })
109 108
110 handler.endElement('entry') 109 handler.endElement("entry")