Use jinja2 instead of django
[hiprofile] / hiprofile.py
index 212fbf13e76a32e8dd26fdbb650fd387df5edb12..c1d1052e2f7513f3f153963c7857f9bff398c343 100644 (file)
@@ -6,7 +6,7 @@ import shutil
 import os
 import socket
 from xml.dom.minidom import parse as parseXML
-from django.template.loader import render_to_string
+from jinja2 import Environment, FileSystemLoader
 
 b_id = 0
 s_id = 0
@@ -306,24 +306,27 @@ def write_report(report, resourcedir, outdir):
 
     os.mkdir(outdir)
 
+    # set up template engine
+    env = Environment(loader = FileSystemLoader(resourcedir),
+                      autoescape = True)
+    templates = {}
+    for name in ['report', 'binary', 'symbol']:
+        templates[name] = env.get_template('%s.html' % name)
+
     # copy required files over
     files = ['style.css', 'hiprofile.js', 'bar.png', 'jquery-1.3.1.min.js']
     for file in files:
         shutil.copy(os.path.join(resourcedir, file), outdir)
 
-    f = open(os.path.join(outdir, 'index.html'), 'w')
-    f.write(render_to_string('report.html', { 'report': report }))
-    f.close()
+    reportfile = os.path.join(outdir, 'index.html')
+    templates['report'].stream(report = report).dump(reportfile)
 
     for binary in report.binaries:
-        f = open(os.path.join(outdir, binary.filename()), 'w')
-        f.write(render_to_string('binary.html',
-                    { 'report': report, 'binary': binary }))
-        f.close()
-
-        for ref in binary.references:
-            f = open(os.path.join(outdir, ref.filename()), 'w')
-            f.write(render_to_string('symbol.html',
-                        { 'report': report, 'binary': binary, 'symbol': ref }))
-            f.close()
-
+        binaryfile = os.path.join(outdir, binary.filename())
+        templates['binary'].stream(report = report, binary = binary). \
+                            dump(binaryfile)
+
+        for symbol in binary.references:
+            symbolfile = os.path.join(outdir, symbol.filename())
+            templates['symbol'].stream(report = report, binary = binary,
+                                       symbol = symbol).dump(symbolfile)