degal/template.py
branchuse-distutils
changeset 41 3b1579a7bffb
parent 28 70b6c13d084f
child 44 533b7e8b5d3b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/degal/template.py	Wed Jun 03 19:03:28 2009 +0300
@@ -0,0 +1,65 @@
+# DeGAL - A pretty simple web image gallery
+# Copyright (C) 2007 Tero Marttila
+# http://marttila.de/~terom/degal/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+
+from mako import exceptions
+from mako.lookup import TemplateLookup
+
+import settings, helpers
+
+import log
+
+_lookup = TemplateLookup(
+    directories=[settings.TEMPLATE_DIR], 
+    module_directory='%s/cache' % settings.TEMPLATE_DIR, 
+    output_encoding='utf-8',
+    filesystem_checks=False,        # this may need to be changed if used in a long-term process
+)
+
+TEMPLATE_GLOBALS = dict(
+    h                          = helpers,
+    version                    = settings.VERSION,
+)
+
+class Template (object) :
+    def __init__ (self, name) :
+        self.name = name
+        self.tpl = _lookup.get_template("%s.%s" % (name, settings.TEMPLATE_EXT))
+    
+    def render (self, **data) :
+        data.update(TEMPLATE_GLOBALS)
+        
+        try :
+            log.debug("render %s with %s", self.name, data)
+            return self.tpl.render(**data)
+        except :
+            data = exceptions.text_error_template().render()
+            log.error(data)
+            
+            raise
+    
+    def render_to (self, file, **data) :
+        fh = open(file, "w")
+        fh.write(self.render(**data))
+        fh.close()
+    
+# templates
+gallery = Template("gallery")
+image = Template("image")
+