Show More
@@ -6,7 +6,7 b'' | |||||
6 | # This software may be used and distributed according to the terms |
|
6 | # This software may be used and distributed according to the terms | |
7 | # of the GNU General Public License, incorporated herein by reference. |
|
7 | # of the GNU General Public License, incorporated herein by reference. | |
8 |
|
8 | |||
9 | import os, mimetypes, re |
|
9 | import os, mimetypes, re, mimetools, cStringIO | |
10 | from mercurial.node import hex, nullid, short |
|
10 | from mercurial.node import hex, nullid, short | |
11 | from mercurial.repo import RepoError |
|
11 | from mercurial.repo import RepoError | |
12 | from mercurial import mdiff, ui, hg, util, archival, patch, hook |
|
12 | from mercurial import mdiff, ui, hg, util, archival, patch, hook | |
@@ -226,8 +226,17 b' class hgweb(object):' | |||||
226 | try: |
|
226 | try: | |
227 |
|
227 | |||
228 | tmpl = self.templater(req) |
|
228 | tmpl = self.templater(req) | |
229 | ctype = tmpl('mimetype', encoding=self.encoding) |
|
229 | try: | |
230 | ctype = templater.stringify(ctype) |
|
230 | ctype = tmpl('mimetype', encoding=self.encoding) | |
|
231 | ctype = templater.stringify(ctype) | |||
|
232 | except KeyError: | |||
|
233 | # old templates with inline HTTP headers? | |||
|
234 | if 'mimetype' in tmpl: | |||
|
235 | raise | |||
|
236 | header = tmpl('header', encoding=self.encoding) | |||
|
237 | header_file = cStringIO.StringIO(templater.stringify(header)) | |||
|
238 | msg = mimetools.Message(header_file, 0) | |||
|
239 | ctype = msg['content-type'] | |||
231 |
|
240 | |||
232 | if cmd == '': |
|
241 | if cmd == '': | |
233 | req.form['cmd'] = [tmpl.cache['default']] |
|
242 | req.form['cmd'] = [tmpl.cache['default']] | |
@@ -282,7 +291,13 b' class hgweb(object):' | |||||
282 | # some functions for the templater |
|
291 | # some functions for the templater | |
283 |
|
292 | |||
284 | def header(**map): |
|
293 | def header(**map): | |
285 |
|
|
294 | header = tmpl('header', encoding=self.encoding, **map) | |
|
295 | if 'mimetype' not in tmpl: | |||
|
296 | # old template with inline HTTP headers | |||
|
297 | header_file = cStringIO.StringIO(templater.stringify(header)) | |||
|
298 | msg = mimetools.Message(header_file, 0) | |||
|
299 | header = header_file.read() | |||
|
300 | yield header | |||
286 |
|
301 | |||
287 | def footer(**map): |
|
302 | def footer(**map): | |
288 | yield tmpl("footer", **map) |
|
303 | yield tmpl("footer", **map) |
@@ -6,7 +6,7 b'' | |||||
6 | # This software may be used and distributed according to the terms |
|
6 | # This software may be used and distributed according to the terms | |
7 | # of the GNU General Public License, incorporated herein by reference. |
|
7 | # of the GNU General Public License, incorporated herein by reference. | |
8 |
|
8 | |||
9 | import os |
|
9 | import os, mimetools, cStringIO | |
10 | from mercurial.i18n import gettext as _ |
|
10 | from mercurial.i18n import gettext as _ | |
11 | from mercurial.repo import RepoError |
|
11 | from mercurial.repo import RepoError | |
12 | from mercurial import ui, hg, util, templater, templatefilters |
|
12 | from mercurial import ui, hg, util, templater, templatefilters | |
@@ -81,8 +81,17 b' class hgwebdir(object):' | |||||
81 |
|
81 | |||
82 | virtual = req.env.get("PATH_INFO", "").strip('/') |
|
82 | virtual = req.env.get("PATH_INFO", "").strip('/') | |
83 | tmpl = self.templater(req) |
|
83 | tmpl = self.templater(req) | |
84 | ctype = tmpl('mimetype', encoding=util._encoding) |
|
84 | try: | |
85 | ctype = templater.stringify(ctype) |
|
85 | ctype = tmpl('mimetype', encoding=util._encoding) | |
|
86 | ctype = templater.stringify(ctype) | |||
|
87 | except KeyError: | |||
|
88 | # old templates with inline HTTP headers? | |||
|
89 | if 'mimetype' in tmpl: | |||
|
90 | raise | |||
|
91 | header = tmpl('header', encoding=util._encoding) | |||
|
92 | header_file = cStringIO.StringIO(templater.stringify(header)) | |||
|
93 | msg = mimetools.Message(header_file, 0) | |||
|
94 | ctype = msg['content-type'] | |||
86 |
|
95 | |||
87 | # a static file |
|
96 | # a static file | |
88 | if virtual.startswith('static/') or 'static' in req.form: |
|
97 | if virtual.startswith('static/') or 'static' in req.form: | |
@@ -246,7 +255,13 b' class hgwebdir(object):' | |||||
246 | def templater(self, req): |
|
255 | def templater(self, req): | |
247 |
|
256 | |||
248 | def header(**map): |
|
257 | def header(**map): | |
249 |
|
|
258 | header = tmpl('header', encoding=util._encoding, **map) | |
|
259 | if 'mimetype' not in tmpl: | |||
|
260 | # old template with inline HTTP headers | |||
|
261 | header_file = cStringIO.StringIO(templater.stringify(header)) | |||
|
262 | msg = mimetools.Message(header_file, 0) | |||
|
263 | header = header_file.read() | |||
|
264 | yield header | |||
250 |
|
265 | |||
251 | def footer(**map): |
|
266 | def footer(**map): | |
252 | yield tmpl("footer", **map) |
|
267 | yield tmpl("footer", **map) |
General Comments 0
You need to be logged in to leave comments.
Login now