From e873d2d4436f0133c190c6b091e47d1401d9682b Mon Sep 17 00:00:00 2001 From: bochecha Date: Tue, 22 Sep 2009 22:43:26 +0000 Subject: Implement a templating system with Genshi Ignore-this: dc565ec2e3087ffec03d44c8786be875 This commit enables the first steps towards the use of the Genshi templating system. A templating system makes it possible to control totally the formatted output without any Python skills. darcs-hash:20090922224326-fa9d6-899b1080212c02f2ea74bf2b9b7fad82b18e6066.gz --- (limited to 'writers.py') diff --git a/writers.py b/writers.py index 2423063..43768fa 100644 --- a/writers.py +++ b/writers.py @@ -235,6 +235,7 @@ class _BaseWriter(object): # ..., # ] + return repl @@ -247,11 +248,36 @@ class Template(_BaseWriter): # replacements object, for debugging purposes #from code import interact ; interact(local=locals()) + # let's make the data structure easier to use in the template + time = { 'start': repl['starttime'], 'end': repl['endtime'], 'timezone': repl['timeZone'] } + meeting = { 'title': repl['pageTitle'], 'owner': repl['owner'], 'logs': repl['fullLogsFullURL'] } + attendees = [ person for person in repl['PeoplePresent'] ] + agenda = [ { 'topic': item['topic'], 'notes': item['items'] } for item in repl['MeetingItems'] ] + actions = [ action for action in repl['ActionItems'] ] + actions_person = [ { 'nick': attendee['nick'], 'actions': attendee['items'] } for attendee in repl['ActionItemsPerson'] ] + meetbot = { 'version': repl['MeetBotVersion'], 'url': repl['MeetBotInfoURL'] } + + from genshi.template import MarkupTemplate + + # hardcoded path to the template file might not be the best thing to do :] + minutes_template = 'meeting-minutes-template.html' + + try: + f = open(minutes_template, 'r') - # Add all the genshi code here + tmpl = MarkupTemplate(f.read()) + stream = tmpl.generate(time=time, + meeting=meeting, + attendees=attendees, + agenda=agenda, + actions=actions, + actions_person=actions_person, + meetbot=meetbot) + finally: + f.close() - return '' # This should return the final string to write + return stream.render() -- cgit v0.9.1