degal/template.py
branchuse-distutils
changeset 41 3b1579a7bffb
parent 28 70b6c13d084f
child 44 533b7e8b5d3b
equal deleted inserted replaced
40:373392025533 41:3b1579a7bffb
       
     1 # DeGAL - A pretty simple web image gallery
       
     2 # Copyright (C) 2007 Tero Marttila
       
     3 # http://marttila.de/~terom/degal/
       
     4 #
       
     5 # This program is free software; you can redistribute it and/or modify
       
     6 # it under the terms of the GNU General Public License as published by
       
     7 # the Free Software Foundation; either version 2 of the License, or
       
     8 # (at your option) any later version.
       
     9 #
       
    10 # This program is distributed in the hope that it will be useful,
       
    11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    13 # GNU General Public License for more details.
       
    14 #
       
    15 # You should have received a copy of the GNU General Public License
       
    16 # along with this program; if not, write to the
       
    17 # Free Software Foundation, Inc.,
       
    18 # 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
       
    19 #
       
    20 
       
    21 from mako import exceptions
       
    22 from mako.lookup import TemplateLookup
       
    23 
       
    24 import settings, helpers
       
    25 
       
    26 import log
       
    27 
       
    28 _lookup = TemplateLookup(
       
    29     directories=[settings.TEMPLATE_DIR], 
       
    30     module_directory='%s/cache' % settings.TEMPLATE_DIR, 
       
    31     output_encoding='utf-8',
       
    32     filesystem_checks=False,        # this may need to be changed if used in a long-term process
       
    33 )
       
    34 
       
    35 TEMPLATE_GLOBALS = dict(
       
    36     h                          = helpers,
       
    37     version                    = settings.VERSION,
       
    38 )
       
    39 
       
    40 class Template (object) :
       
    41     def __init__ (self, name) :
       
    42         self.name = name
       
    43         self.tpl = _lookup.get_template("%s.%s" % (name, settings.TEMPLATE_EXT))
       
    44     
       
    45     def render (self, **data) :
       
    46         data.update(TEMPLATE_GLOBALS)
       
    47         
       
    48         try :
       
    49             log.debug("render %s with %s", self.name, data)
       
    50             return self.tpl.render(**data)
       
    51         except :
       
    52             data = exceptions.text_error_template().render()
       
    53             log.error(data)
       
    54             
       
    55             raise
       
    56     
       
    57     def render_to (self, file, **data) :
       
    58         fh = open(file, "w")
       
    59         fh.write(self.render(**data))
       
    60         fh.close()
       
    61     
       
    62 # templates
       
    63 gallery = Template("gallery")
       
    64 image = Template("image")
       
    65