##// END OF EJS Templates
hgweb: add compatibility code for old templates...
Alexis S. L. Carvalho -
r6379:d2bb66a8 default
parent child Browse files
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 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)
@@ -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 yield tmpl('header', encoding=util._encoding, **map)
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