style: switching to xhtml5 and sass
[treecutter.git] / treecutter / page.py
index 22d380ec033562358c0d01562af3d4544f5b87e7..53eeb0d40baa357f18c7f76d98404b8ed1206518 100644 (file)
@@ -3,8 +3,12 @@ import os
 import subprocess
 import tempfile
 import re
+import getpass
+import gnupg
+import codecs
 from lxml import etree
-from Cheetah.Template import Template
+#from jinja2 import Template
+import jinja2
 from pkg_resources import resource_filename, resource_listdir
 from time import time
 import treecutter.constants as const
@@ -87,11 +91,21 @@ class Page():
         for r in self._doc.xpath(u"//db:link[@xlink:href]",namespaces=const.XPATH):
             rf = os.path.join(dirname,r.get(const.XLINK+'href'))
             if os.path.isfile(rf):
+                if r.get('security')=='encrypt':
+                    with open(rf, 'rb') as f:
+                        gpg = gnupg.GPG()
+                        status = gpg.encrypt_file(
+                        f, None, passphrase=getpass.getpass(rf+' password:'), symmetric=True,
+                        output=rf+'.gpg')
+                    r.set(const.XLINK+'href', r.get(const.XLINK+'href')+'.gpg')
+                    rf=rf+'.gpg'
                 self._resources.append(rf)
         for i in self._doc.xpath(u"//db:imagedata[@fileref]",namespaces=const.XPATH):
             im = os.path.join(dirname,i.get('fileref'))
             if os.path.isfile(im):
                 self._resources.append(im)
+            else:
+                print "WARNING: File "+im+" is missing!"
         for i in self._doc.xpath(u"//html:form[@action]",namespaces=const.XPATH):
             pyscript = re.split('\.py',i.get('action'),1)[0]+'.py'
             im = os.path.join(dirname,pyscript)
@@ -113,11 +127,11 @@ class Page():
         tfi.write(etree.tostring(self._doc,encoding='UTF-8',pretty_print=False))
         tfi.close()
 #  cmd = ["saxon-xslt-xinclude","-o",outfile,infile,style_xslt]
-        cmd = ["xsltproc","--xinclude","--output",outfile,style+"docbook.xsl",infile]
+        cmd = ["xsltproc","--xinclude","--output",outfile,style+"docbook.xhtml5.xsl",infile]
         retcode = subprocess.call(cmd)
         if retcode:
             print 'Error: '+' '.join(cmd)+' Returncode ['+str(retcode)+']'
-        tfo = open(outfile,'r')
+        tfo = codecs.open(outfile, "r", "utf-8")
         self._rendered_article = tfo.read()
         tfo.close()
         os.remove(infile)
@@ -128,14 +142,23 @@ class Page():
         htmlmenu =  sitemap.gen_menu(self._lang,None,"menu")
         levelmenu = sitemap.gen_menu(self._lang,self,"tree")
         langmenu = sitemap.lang_menu(self._lang,self._link)
-        template = Template(file=style+'index.'+self._lang+'.html.tmpl',
-                            searchList=[{'title':self._title},
-                                        {'menu':htmlmenu},
-                                        {'article':self._rendered_article},
-                                        {'levelmenu':levelmenu},
-                                        {'langmenu':langmenu}])
-        outfile = tdir+'html'.join(self._file.rsplit('xml',1))
+        article = self._rendered_article
+        templateLoader = jinja2.FileSystemLoader( searchpath="/" )
+        templateEnv = jinja2.Environment( loader=templateLoader )
+
+        templateVars = {'title':self._title,
+                        'menu':htmlmenu,
+                        'article':article,
+                        'levelmenu':levelmenu,
+                        'langmen':langmenu}
+
+        s = unicode(style, "utf-8")
+        t = s+'index.'+self._lang+'.xhtml.tmpl'
+        template = templateEnv.get_template( t )
+        templateout = template.render( templateVars )
+
+        outfile = tdir+'xhtml'.join(self._file.rsplit('xml',1))
         mkdir_p(os.path.dirname(outfile))
-        out = open(outfile, 'w')
-        out.write(str(template))
+        out = codecs.open(outfile, 'w', 'utf-8')
+        out.write(templateout)
         out.close()