Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/hgweb_mod.py @ 6379:d2bb66a8a435
hgweb: add compatibility code for old templates
Up to changeset 3340aa5a64f7, HTTP headers were expected to be embedded
in the "headers" template. Since that changeset, the content-type is
supposed to be defined as the "mimetype" template in the map file.
This changeset makes sure the old templates still work.
author | Alexis S. L. Carvalho <alexis@cecm.usp.br> |
---|---|
date | Mon, 24 Mar 2008 13:45:01 -0300 |
parents | 31a01e3d99cc |
children | a1007f7b9b7b 8189e03adb44 |
comparison
equal
deleted
inserted
replaced
6378:f0f830114a9b | 6379:d2bb66a8a435 |
---|---|
4 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> | 4 # Copyright 2005-2007 Matt Mackall <mpm@selenic.com> |
5 # | 5 # |
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 |
13 from mercurial import revlog, templater, templatefilters, changegroup | 13 from mercurial import revlog, templater, templatefilters, changegroup |
14 from common import get_mtime, style_map, paritygen, countgen, get_contact | 14 from common import get_mtime, style_map, paritygen, countgen, get_contact |
224 # process the web interface request | 224 # process the web interface request |
225 | 225 |
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']] |
234 cmd = req.form['cmd'][0] | 243 cmd = req.form['cmd'][0] |
235 | 244 |
280 staticurl += '/' | 289 staticurl += '/' |
281 | 290 |
282 # some functions for the templater | 291 # some functions for the templater |
283 | 292 |
284 def header(**map): | 293 def header(**map): |
285 yield tmpl('header', encoding=self.encoding, **map) | 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) |
289 | 304 |
290 def motd(**map): | 305 def motd(**map): |