summaryrefslogtreecommitdiffstats
path: root/lps_gen.py
diff options
context:
space:
mode:
authorrsiddharth <rsd@gnu.org>2015-12-15 20:50:39 -0500
committerrsiddharth <rsd@gnu.org>2015-12-15 20:50:39 -0500
commitaac9e52d138fef142b67a85921bff643060cf277 (patch)
treec3eabbdff964429c91228997b46f46284cacb548 /lps_gen.py
parenta28e07096198b52da4e1e1411d1f761d411e0db1 (diff)
HTMLRender -> RenderHTML + changes to it.
`RenderHTML` (was `HTMLRender`) now uses `PackagLoader` instead of FileSystemLoader and the template are loaded from the templates/ directory.
Diffstat (limited to 'lps_gen.py')
-rw-r--r--lps_gen.py38
1 files changed, 22 insertions, 16 deletions
diff --git a/lps_gen.py b/lps_gen.py
index 9476e75..478d4ef 100644
--- a/lps_gen.py
+++ b/lps_gen.py
@@ -19,14 +19,15 @@
# <http://www.gnu.org/licenses/>.
import json
-import jinja2
from argparse import ArgumentParser
from collections import OrderedDict
from os import path
+from jinja2 import Environment, PackageLoader
from mistune import Renderer, Markdown
+
# Python dictionary that will contain the lp schedule.
lps_dict = OrderedDict()
@@ -62,6 +63,10 @@ class LPSRenderer(Renderer):
def header(self, text, level, raw=None):
global lps_dict
+ utf8_text = text
+
+ # jinja2 will encode text back to utf8.
+ text = text.decode('utf8')
if level == 2:
# Add new day.
@@ -79,7 +84,7 @@ class LPSRenderer(Renderer):
# to 0.
self.no_paragraph = 0
- return super(LPSRenderer, self).header(text, level, raw)
+ return super(LPSRenderer, self).header(utf8_text, level, raw)
def paragraph(self, text):
@@ -87,6 +92,9 @@ class LPSRenderer(Renderer):
p = super(LPSRenderer, self).paragraph(text)
+ # jinja2 will encode text back to utf8.
+ text = text.decode('utf8')
+
if self.no_paragraph == 0:
# Speaker
if len(text.split(', ')) == 1:
@@ -133,18 +141,19 @@ class LPSMarkdown(Markdown):
html = super(LPSMarkdown, self).parse(text)
return lps_dict
-def HTMLRender(_dict):
- """Render html from a dictionary and returns a string.
- Uses jinja2 and HTML template file.
- """
- templateLoader = jinja2.FileSystemLoader( searchpath="./" )
- templateEnv = jinja2.Environment( loader=templateLoader )
- TEMPLATE_FILE = "tests/files/index.html"
- template = templateEnv.get_template( TEMPLATE_FILE )
- _data = {'res':_dict}
- lps_output = template.render( _data )
- return lps_output
+def RenderHTML(lps_dict, year):
+ """Renders LP schedule in HTML from a python dictionary.
+
+ Returns the HTML as a string.
+ """
+ env = Environment(loader=PackageLoader('lps_gen',
+ 'templates'),
+ trim_blocks=True, lstrip_blocks=True)
+ template = env.get_template('lp-sch-%s.jinja2' % year)
+
+ return template.render(schedule=lps_dict)
+
def main():
parser = ArgumentParser()
@@ -156,9 +165,6 @@ def main():
markdown = LPSMarkdown()
lps_dict = markdown(lps_md_content)
- print HTMLRender(lps_dict)
-
- #print json.dumps(lps_dict, indent=4)
if __name__ == "__main__":