From a684d19289767b368589b73d6da4f0a74868fbf6 Mon Sep 17 00:00:00 2001 From: Hua Yanghao Date: Wed, 14 Nov 2018 20:51:45 +0100 Subject: [PATCH 1/2] use mako strict_undefined and allow user to provide an environment to template --- pygreen.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/pygreen.py b/pygreen.py index de3105c..95bc1f3 100644 --- a/pygreen.py +++ b/pygreen.py @@ -5,6 +5,7 @@ import flask import os.path from mako.lookup import TemplateLookup +from mako import exceptions import os import os.path import wsgiref.handlers @@ -18,9 +19,16 @@ _logger = logging.getLogger(__name__) +sys.path.append(".") + class PyGreen: def __init__(self): + if os.path.isfile("env.py"): + import env + else: + env = None + self.env = env # the Bottle application self.app = flask.Flask(__name__, static_folder=None, template_folder=None) # a set of strings that identifies the extension of the files @@ -35,6 +43,7 @@ def __init__(self): imports=["from markdown import markdown"], input_encoding='iso-8859-1', collection_size=100, + strict_undefined=True, ) # A list of regular expression. Files whose the name match # one of those regular expressions will not be outputed when generating @@ -65,9 +74,18 @@ def base_lister(): def file_renderer(path): if is_public(path): + if os.path.isdir(path): + tmp = os.path.join(path, "index.html") + if os.path.isfile(tmp): + path = tmp + else: + return b"No index.html in path: %s" % path if path.split(".")[-1] in self.template_exts and self.templates.has_template(path): t = self.templates.get_template(path) - data = t.render_unicode(pygreen=self) + try: + data = t.render_unicode(pygreen=self, env=self.env) + except: + return exceptions.html_error_template().render() return data.encode(t.module._source_encoding) if os.path.exists(os.path.join(self.folder, path)): return flask.send_file(path) @@ -154,9 +172,8 @@ def gen(): print("") args.func() -pygreen = PyGreen() - def main(): + pygreen = PyGreen() pygreen.cli() if __name__ == "__main__": From 61518519667490a880bcbce88a20f20f265162bd Mon Sep 17 00:00:00 2001 From: Yanghao Hua Date: Sun, 27 Sep 2020 13:17:51 +0200 Subject: [PATCH 2/2] use utf-8 encoding by default --- pygreen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygreen.py b/pygreen.py index 95bc1f3..244b7e5 100644 --- a/pygreen.py +++ b/pygreen.py @@ -41,7 +41,7 @@ def __init__(self): # the TemplateLookup of Mako self.templates = TemplateLookup(directories=[self.folder], imports=["from markdown import markdown"], - input_encoding='iso-8859-1', + input_encoding='utf-8', collection_size=100, strict_undefined=True, )