4 # Generate arbitrary XML files
12 def __init__(self, blog, item):
13 self.itemTitle = item.itemTitle
14 self.itemURL = item.itemURL
15 self.itemDate = item.itemDate
16 self.blogTitle = blog.blogTitle
17 self.blogURL = blog.blogURL
18 self.imageURL = blog.imageURL
19 self.imageLink = blog.imageLink
20 self.contents = item.contents
23 def __init__(self, date):
24 self.planetDate = date
28 def __init__(self, bloglist):
29 self.__bloglist__ = bloglist
30 self.__tainted__ = True
33 def append(self, blog):
34 self.__bloglist__.append(blog)
35 self.__tainted__ = True
37 def __getNext__(self, bloglist):
38 "Returns a PlanetItem reaped from a bloglist"
42 if len(blog.items) > 0 and blog.items[0].itemDate > latestTime:
43 latestTime = blog.items[0].itemDate
45 if holdingBlog == None:
47 item = holdingBlog.items.pop(0)
48 return PlanetItem(holdingBlog, item)
52 # we need to sort the blogs into a single news feed
53 # copy the bloglist to a working symbol
54 bloglist = self.__bloglist__ + []
59 lastItem = self.__getNext__(bloglist)
62 # this checks to see if it's a new day
63 if time.localtime(lastItem.itemDate)[6] != lastDate:
64 lastDate = time.localtime(lastItem.itemDate)[6]
65 workingDate = PlanetDate(lastItem.itemDate)
66 self.dates.append(workingDate)
67 # append the item to the current date
68 workingDate.items.append(lastItem)
69 self.__tainted__ = False
74 def __init__(self, doctype, bloglist):
76 self.planet = Planet(bloglist)
77 self.items = self.planet.sort()
78 # doctype should be something like XMLWriter.XHTMLWriter
79 self.writer = doctype(self.items)
80 self.writer.parent = self
83 output = self.writer.write()
87 def __init__(self, planet):
92 def __write_item__(self, item):
94 output += '<div class="item">\n'
95 output += '<h2>%s: %s</h2>\n' % (item.blogTitle, item.itemTitle)
96 output += '<p class="time">\n'
98 output += '<a class="image" href="%s"><img class="image" src="%s" alt="%s" /></a>\n' % (item.imageLink, item.imageURL, item.blogTitle)
99 output += '(<a href="%s">%s</a>)\n' % (item.itemURL ,time.strftime('%A %B %d, %Y %H:%M AWST', time.localtime(item.itemDate)))
101 output += '<p class="body">\n'
102 output += item.contents
110 output += '<?xml version="1.0" encoding="UTF-8"?>\n'
111 output += '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n'
112 output += '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >\n'
114 output += '<title>Planet UCC</title>\n'
115 output += '<link rel="stylesheet" href="planet.css" type="text/css" media="screen" />\n'
116 output += '<link rel="icon" type="image/png" href="icon.png" />\n'
117 output += '</head>\n'
119 output += '<div class="header">\n'
121 output += open('header.html').read()
125 output += '<div class="sidebar">\n'
127 output += open('sidebar.html').read()
130 output += '<h2>Last Updated</h2>\n'
132 output += '%s\n' % time.strftime('%A %B %d, %Y %H:%M AWST', time.localtime())
135 output += '<h2>Feeds</h2>\n'
137 for blog in self.parent.blogs:
138 output += '<a href="%s">%s</a> (<a href="%s">feed</a>)<br />\n' % (blog.blogURL, blog.blogTitle, blog.feedURL)
141 output += '<div class="items">\n'
142 for date in self.planet:
143 output += '<h1>%s</h1>\n' % time.strftime('%A %B %d, %Y', time.localtime(date.planetDate))
144 for item in date.items:
145 output += self.__write_item__(item)
146 # see how many items we've written
148 if itemcount >= self.maxitems:
150 # again, check to see if we've written the maximum number of items
151 if itemcount >= self.maxitems:
154 output += '<div class="footer">\n'
156 output += open('footer.html').read()
160 output += '</body>\n'