Allow per-file shadowing of static directory in templatepath
authorBrendan Cully <brendan@kublai.com>
Tue, 28 Oct 2008 22:24:17 -0700
changeset 7288 9c399c53469d
parent 7287 6e9fe4ff9c54
child 7289 ddab62b2fec4
Allow per-file shadowing of static directory in templatepath
mercurial/hgweb/common.py
mercurial/hgweb/webcommands.py
--- a/mercurial/hgweb/common.py	Tue Oct 28 21:58:30 2008 -0700
+++ b/mercurial/hgweb/common.py	Tue Oct 28 22:24:17 2008 -0700
@@ -53,12 +53,17 @@
 
     """
     parts = fname.split('/')
-    path = directory
     for part in parts:
         if (part in ('', os.curdir, os.pardir) or
             os.sep in part or os.altsep is not None and os.altsep in part):
             return ""
-        path = os.path.join(path, part)
+    fpath = os.path.join(*parts)
+    if isinstance(directory, str):
+        directory = [directory]
+    for d in directory:
+        path = os.path.join(d, fpath)
+        if os.path.exists(path):
+            break
     try:
         os.stat(path)
         ct = mimetypes.guess_type(path)[0] or "text/plain"
--- a/mercurial/hgweb/webcommands.py	Tue Oct 28 21:58:30 2008 -0700
+++ b/mercurial/hgweb/webcommands.py	Tue Oct 28 22:24:17 2008 -0700
@@ -583,10 +583,7 @@
         tp = web.templatepath
         if isinstance(tp, str):
             tp = [tp]
-        for path in tp:
-            static = os.path.join(path, 'static')
-            if os.path.isdir(static):
-                break
+        static = [os.path.join(p, 'static') for p in tp]
     return [staticfile(static, fname, req)]
 
 def graph(web, req, tmpl):