Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/hgwebdir_mod.py @ 4081:e6d26e71f049
merge with crew-stable
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Tue, 13 Feb 2007 10:25:45 -0200 |
parents | 022056263354 ef14fdb675da |
children | 51e52db6b40d |
comparison
equal
deleted
inserted
replaced
4073:95ffa36d1d2a | 4081:e6d26e71f049 |
---|---|
13 from common import get_mtime, staticfile, style_map | 13 from common import get_mtime, staticfile, style_map |
14 from hgweb_mod import hgweb | 14 from hgweb_mod import hgweb |
15 | 15 |
16 # This is a stopgap | 16 # This is a stopgap |
17 class hgwebdir(object): | 17 class hgwebdir(object): |
18 def __init__(self, config): | 18 def __init__(self, config, parentui=None): |
19 def cleannames(items): | 19 def cleannames(items): |
20 return [(name.strip(os.sep), path) for name, path in items] | 20 return [(name.strip(os.sep), path) for name, path in items] |
21 | 21 |
22 self.motd = "" | 22 self.parentui = parentui |
23 self.style = "" | 23 self.motd = None |
24 self.style = None | |
24 self.repos_sorted = ('name', False) | 25 self.repos_sorted = ('name', False) |
25 if isinstance(config, (list, tuple)): | 26 if isinstance(config, (list, tuple)): |
26 self.repos = cleannames(config) | 27 self.repos = cleannames(config) |
27 self.repos_sorted = ('', False) | 28 self.repos_sorted = ('', False) |
28 elif isinstance(config, dict): | 29 elif isinstance(config, dict): |
71 | 72 |
72 def footer(**map): | 73 def footer(**map): |
73 yield tmpl("footer", **map) | 74 yield tmpl("footer", **map) |
74 | 75 |
75 def motd(**map): | 76 def motd(**map): |
76 yield self.motd | 77 if self.motd is not None: |
78 yield self.motd | |
79 else: | |
80 yield config('web', 'motd', '') | |
81 | |
82 parentui = self.parentui or ui.ui(report_untrusted=False) | |
83 | |
84 def config(section, name, default=None, untrusted=True): | |
85 return parentui.config(section, name, default, untrusted) | |
77 | 86 |
78 url = req.env['REQUEST_URI'].split('?')[0] | 87 url = req.env['REQUEST_URI'].split('?')[0] |
79 if not url.endswith('/'): | 88 if not url.endswith('/'): |
80 url += '/' | 89 url += '/' |
81 | 90 |
82 style = self.style | 91 style = self.style |
92 if style is None: | |
93 style = config('web', 'style', '') | |
83 if req.form.has_key('style'): | 94 if req.form.has_key('style'): |
84 style = req.form['style'][0] | 95 style = req.form['style'][0] |
85 mapfile = style_map(templater.templatepath(), style) | 96 mapfile = style_map(templater.templatepath(), style) |
86 tmpl = templater.templater(mapfile, templater.common_filters, | 97 tmpl = templater.templater(mapfile, templater.common_filters, |
87 defaults={"header": header, | 98 defaults={"header": header, |
111 separator = ';' | 122 separator = ';' |
112 | 123 |
113 rows = [] | 124 rows = [] |
114 parity = 0 | 125 parity = 0 |
115 for name, path in self.repos: | 126 for name, path in self.repos: |
116 u = ui.ui(report_untrusted=False) | 127 u = ui.ui(parentui=parentui) |
117 try: | 128 try: |
118 u.readconfig(os.path.join(path, '.hg', 'hgrc')) | 129 u.readconfig(os.path.join(path, '.hg', 'hgrc')) |
119 except IOError: | 130 except IOError: |
120 pass | 131 pass |
121 def get(section, name, default=None): | 132 def get(section, name, default=None): |
179 break | 190 break |
180 virtual = virtual[:up] | 191 virtual = virtual[:up] |
181 if real: | 192 if real: |
182 req.env['REPO_NAME'] = virtual | 193 req.env['REPO_NAME'] = virtual |
183 try: | 194 try: |
184 hgweb(real).run_wsgi(req) | 195 repo = hg.repository(parentui, real) |
196 hgweb(repo).run_wsgi(req) | |
185 except IOError, inst: | 197 except IOError, inst: |
186 req.write(tmpl("error", error=inst.strerror)) | 198 req.write(tmpl("error", error=inst.strerror)) |
187 except hg.RepoError, inst: | 199 except hg.RepoError, inst: |
188 req.write(tmpl("error", error=str(inst))) | 200 req.write(tmpl("error", error=str(inst))) |
189 else: | 201 else: |