X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fwmako.py;h=ef886fb5f2829a4a3fdece27f1b4b528904825d6;hb=5afb31180662cfaf123ae6155a832470c7c6dce2;hp=817233dfeb12f7b4be6e12247759b18465e13cd0;hpb=d854802afd3d6f22d86131f9a87105a69d4e1ec7;p=wrw.git diff --git a/wrw/wmako.py b/wrw/wmako.py index 817233d..ef886fb 100644 --- a/wrw/wmako.py +++ b/wrw/wmako.py @@ -1,6 +1,6 @@ import os, threading from mako import template, lookup, filters -from . import util, form, session +from . import util, form, session, env, resp # It seems Mako isn't thread-safe. makolock = threading.Lock() @@ -25,18 +25,26 @@ defargs = {"output_encoding": "utf-8", "default_filters": ["decode.utf8"], "module_directory": cachedir, } -lib = liblookup(directories = libdirs, **defargs) + +def makelib(init=liblookup, directories=[], **kwargs): + ad = dict(defargs) + ad.update(kwargs) + return init(directories = libdirs + directories, **ad) + +lib = env.var(makelib()) if not os.path.exists(cachedir): os.mkdir(cachedir) def handle(req, filename, **kw): with makolock: - tt = template.Template(filename = filename, lookup = lib, **defargs) + tt = template.Template(filename = filename, lookup = lib.val, **defargs) req.ohead["Content-Type"] = "text/html; charset=utf-8" return [tt.render(request = req, **kw)] @util.wsgiwrap def application(req): + if req.method not in ["GET", "HEAD"]: + raise resp.httperror(405) return handle(req, req.filename, form = form.formdata(req), session = session.get(req))