See ChangeLog
[planet-ucc.git] / XHTMLWriter.py
diff --git a/XHTMLWriter.py b/XHTMLWriter.py
new file mode 100644 (file)
index 0000000..0694064
--- /dev/null
@@ -0,0 +1,87 @@
+import time
+
+class XHTMLWriter:
+       def __init__(self, planet):
+               self.planet     = planet
+               self.maxitems   = 50
+               self.parent     = None
+       
+       def __write_item__(self, item):
+               output  =       ''
+               output  +=      '<div class="item">\n'
+               output  +=      '<h2>%s: %s</h2>\n' % (item.blogTitle, item.itemTitle)
+               output  +=      '<p class="time">\n'
+               if item.imageURL:
+                       output += '<a class="image" href="%s"><img class="image" src="%s" alt="%s" /></a>\n' % (item.imageLink, item.imageURL, item.blogTitle)
+               output  +=      '(<a href="%s">%s</a>)\n' % (item.itemURL ,time.strftime('%A %B %d, %Y %H:%M AWST', time.localtime(item.itemDate)))
+               output  +=      '</p>\n'
+               output  +=      '<p class="body">\n'
+               output  +=      item.contents
+               output  +=      '\n</p>\n'
+               output  +=      '</div>\n'
+               return output
+       
+       def write(self):
+               itemcount       = 0
+               output  =       ''
+               output  +=      '<?xml version="1.0" encoding="UTF-8"?>\n'
+               output  +=      '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n'
+               output  +=      '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >\n'
+               output  +=      '<head>\n'
+               output  +=      '<title>Planet UCC</title>\n'
+               output  +=      '<link rel="stylesheet" href="planet.css" type="text/css" media="screen" />\n'
+               output  +=      '<link rel="icon" type="image/png" href="icon.png" />\n'
+               output  +=      '</head>\n'
+               output  +=      '<body>\n'
+               output  +=      '<div class="header">\n'
+               try:
+                       output  +=      open('header.html').read()
+               except:
+                       pass
+               output  +=      '</div>\n'
+               output  +=      '<div class="sidebar">\n'
+               try:
+                       output  +=      open('sidebar.html').read()
+               except:
+                       pass
+               output  +=      '<h2>Last Updated</h2>\n'
+               output  +=      '<p>\n'
+               output  +=      '%s\n' % time.strftime('%A %B %d, %Y %H:%M AWST', time.localtime())
+               output  +=      '</p>\n'
+               if self.parent:
+                       output  +=      '<h2>Feeds</h2>\n'
+                       output  +=      '<p>\n'
+                       blogscopy       = self.parent.blogs + []
+                       blogscopy.sort(self.__blog_sort__)
+                       for blog in blogscopy:
+                               output  += '<a href="%s">%s</a> (<a href="%s">feed</a>)<br />\n' % (blog.blogURL, blog.blogTitle, blog.feedURL)
+                       output  +=      '</p>\n'
+               output  +=      '</div>\n'
+               output  +=      '<div class="items">\n'
+               for date in self.planet:
+                       output  += '<h1>%s</h1>\n' % time.strftime('%A %B %d, %Y', time.localtime(date.planetDate))
+                       for item in date.items:
+                               output  += self.__write_item__(item)
+                               # see how many items we've written
+                               itemcount += 1
+                               if itemcount >= self.maxitems:
+                                       break
+                       # again, check to see if we've written the maximum number of items
+                       if itemcount >= self.maxitems:
+                               break
+               output  +=      '</div>\n'
+               output  +=      '<div class="footer">\n'
+               try:
+                       output  +=      open('footer.html').read()
+               except:
+                       pass
+               output  +=      '</div>\n'
+               output  +=      '</body>\n'
+               output  +=      '</html>'
+               return output
+       
+       def __blog_sort__(self, blog1, blog2):
+               name1, name2    = blog1.blogTitle.split(' ')[-1], blog2.blogTitle.split(' ')[-1]
+               if name1 < name2: return -1
+               if name1 == name2: return 0
+               if name1 > name2: return 1

UCC git Repository :: git.ucc.asn.au