lib/template.py
changeset 46 185504387370
parent 45 e94ab812c0c8
child 47 3d59c9eeffaa
--- a/lib/template.py	Sun Feb 08 03:13:11 2009 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-"""
-    Template handler
-"""
-
-# use Mako
-from mako import exceptions
-from mako.template import Template
-import mako.lookup
-
-# for http.ResponseError
-import http
-
-import helpers
-
-# path to template files
-TEMPLATE_DIR = "templates"
-
-# path to cached templates
-CACHE_DIR = "cache/templates"
-
-# template file extension
-TEMPLATE_EXT = "tmpl"
-
-class TemplateError (http.ResponseError) :
-    """
-        Raised by the template module functions
-    """
-
-    pass
-
-class TemplateLoader (mako.lookup.TemplateLookup) :
-    """
-        Our own specialization of mako's TemplateLookup
-    """
-
-    def __init__ (self, path, fileext=TEMPLATE_EXT, **env) :
-        """
-            Initialize to load templates located at path, with the given file extension.
-
-            The given **env list is supplied to every template render
-        """
-
-        # store
-        self.path = path
-        self.fileext = fileext
-        self.env = env
-            
-        # build the TemplateLookup
-        super(TemplateLoader, self).__init__(directories=[path], module_directory=CACHE_DIR)
-    
-    @staticmethod
-    def _render (tpl, env, params) :
-        """
-            Render the given template with given env/params, returning the output as a unicode string, or raising a TemplateError
-        """
-
-        # build the context from our superglobals, env, and params
-        ctx = dict(
-            h       = helpers,
-        )
-        ctx.update(env)
-        ctx.update(params)
-
-        try :
-            return tpl.render_unicode(**ctx)
-        
-        # a template may render other templates
-        except TemplateError :
-            raise
-
-        except :
-            details = exceptions.text_error_template().render()
-
-            raise TemplateError("Template render failed", status='500 Internal Server Error', details=details)
-
-
-    def lookup (self, name) :
-        """
-            Looks up a template based on the bare "name", which does not include the path or file extension
-        """
-        
-        try :
-            return self.get_template("%s.%s" % (name, self.fileext))
-
-        except :
-            raise TemplateError("Template broken: %r" % (name, ), status='500 Internal Server Error', details=exceptions.text_error_template().render())
-    
-    def render (self, name, **params) :
-        """
-            Render a template, using lookup() on the given name
-        """
-
-        return self._render(self.lookup(name), self.env, params)
-
-    def render_to_response (self, name, **params) :
-        """
-            Render a template, returning a http.Response object
-        """
-
-        return http.Response(self.render(name, **params))
-
-    @classmethod
-    def load (cls, path) :
-        """
-            Loads a template from a specific file
-        """
-
-        try :
-            return Template(filename=path, module_directory=CACHE_DIR)
-
-        except :
-            raise TemplateError("Template broken: %r" % (path, ), status='500 Internal Server Error', details=exceptions.text_error_template().render())
-    
-    @classmethod
-    def render_file (cls, path, **params) :
-        """
-            Render a template, using load() on the given path. No global environment vars are defined for the render.
-        """
-
-        return cls._render(cls.load(path), dict(), params)
-
-    @classmethod
-    def render_template (cls, template, **params) :
-        """
-            Render the given template object. No global environment vars are defined for the render.
-        """
-        
-        return cls._render(template, dict(), params)