diff -r 373392025533 -r 3b1579a7bffb degal/template.py --- /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") +