diff -r 57bb1d473765 -r bf230208ab8f qmsk_www_pages/pages.py --- a/qmsk_www_pages/pages.py Sun Sep 14 13:12:21 2014 +0300 +++ b/qmsk_www_pages/pages.py Sun Sep 14 13:54:07 2014 +0300 @@ -6,10 +6,14 @@ import os, os.path import markdown +import mako.template class NotFound (Exception): pass +class RenderError (Exception): + pass + class Site (object): @classmethod def lookup (cls): @@ -342,12 +346,27 @@ output_format = self.format, ) +class TemplatePage (Page): + def render_html (self, request): + """ + Raises RenderError if !DEBUG, arbitrary error with stack trace otherwise. + """ + + try: + return mako.template.Template(filename=self.path).render() + except Exception as error: + if settings.DEBUG: + raise + else: + raise RenderError(error) + SITE = Site.lookup() TYPES = { 'html': HTML_Page, 'md': MarkdownPage, 'markdown': MarkdownPage, + 'tmpl': TemplatePage, } def page (page):