comparison mercurial/hgweb/webutil.py @ 36865:3d60a22e27f5

hgweb: perform all parameter lookup via qsparams I think I managed to update all call sites using wsgirequest.form to use parsedrequest.qsparams. Since behavior of qsparams is to retrieve last value, behavior will change if a parameter was specified multiple times. But I think this is acceptable. I'm not a fan of the `req.req.qsparams` pattern. And some of the modified code could be written better. But I was aiming for a straight port with this change. Cleanup can come later. Differential Revision: https://phab.mercurial-scm.org/D2781
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 10 Mar 2018 12:36:36 -0800
parents 1a1972b1a1ff
children c68e79dcf21c
comparison
equal deleted inserted replaced
36864:4e06e8336634 36865:3d60a22e27f5
175 def difffeatureopts(req, ui, section): 175 def difffeatureopts(req, ui, section):
176 diffopts = patch.difffeatureopts(ui, untrusted=True, 176 diffopts = patch.difffeatureopts(ui, untrusted=True,
177 section=section, whitespace=True) 177 section=section, whitespace=True)
178 178
179 for k in ('ignorews', 'ignorewsamount', 'ignorewseol', 'ignoreblanklines'): 179 for k in ('ignorews', 'ignorewsamount', 'ignorewseol', 'ignoreblanklines'):
180 v = req.form.get(k, [None])[0] 180 v = req.req.qsparams.get(k)
181 if v is not None: 181 if v is not None:
182 v = util.parsebool(v) 182 v = util.parsebool(v)
183 setattr(diffopts, k, v if v is not None else True) 183 setattr(diffopts, k, v if v is not None else True)
184 184
185 return diffopts 185 return diffopts
293 293
294 return ctx 294 return ctx
295 295
296 def changectx(repo, req): 296 def changectx(repo, req):
297 changeid = "tip" 297 changeid = "tip"
298 if 'node' in req.form: 298 if 'node' in req.req.qsparams:
299 changeid = req.form['node'][0] 299 changeid = req.req.qsparams['node']
300 ipos = changeid.find(':') 300 ipos = changeid.find(':')
301 if ipos != -1: 301 if ipos != -1:
302 changeid = changeid[(ipos + 1):] 302 changeid = changeid[(ipos + 1):]
303 elif 'manifest' in req.form: 303 elif 'manifest' in req.req.qsparams:
304 changeid = req.form['manifest'][0] 304 changeid = req.req.qsparams['manifest']
305 305
306 return changeidctx(repo, changeid) 306 return changeidctx(repo, changeid)
307 307
308 def basechangectx(repo, req): 308 def basechangectx(repo, req):
309 if 'node' in req.form: 309 if 'node' in req.req.qsparams:
310 changeid = req.form['node'][0] 310 changeid = req.req.qsparams['node']
311 ipos = changeid.find(':') 311 ipos = changeid.find(':')
312 if ipos != -1: 312 if ipos != -1:
313 changeid = changeid[:ipos] 313 changeid = changeid[:ipos]
314 return changeidctx(repo, changeid) 314 return changeidctx(repo, changeid)
315 315
316 return None 316 return None
317 317
318 def filectx(repo, req): 318 def filectx(repo, req):
319 if 'file' not in req.form: 319 if 'file' not in req.req.qsparams:
320 raise ErrorResponse(HTTP_NOT_FOUND, 'file not given') 320 raise ErrorResponse(HTTP_NOT_FOUND, 'file not given')
321 path = cleanpath(repo, req.form['file'][0]) 321 path = cleanpath(repo, req.req.qsparams['file'])
322 if 'node' in req.form: 322 if 'node' in req.req.qsparams:
323 changeid = req.form['node'][0] 323 changeid = req.req.qsparams['node']
324 elif 'filenode' in req.form: 324 elif 'filenode' in req.req.qsparams:
325 changeid = req.form['filenode'][0] 325 changeid = req.req.qsparams['filenode']
326 else: 326 else:
327 raise ErrorResponse(HTTP_NOT_FOUND, 'node or filenode not given') 327 raise ErrorResponse(HTTP_NOT_FOUND, 'node or filenode not given')
328 try: 328 try:
329 fctx = repo[changeid][path] 329 fctx = repo[changeid][path]
330 except error.RepoError: 330 except error.RepoError:
331 fctx = repo.filectx(path, fileid=changeid) 331 fctx = repo.filectx(path, fileid=changeid)
332 332
333 return fctx 333 return fctx
334 334
335 def linerange(req): 335 def linerange(req):
336 linerange = req.form.get('linerange') 336 linerange = req.req.qsparams.getall('linerange')
337 if linerange is None: 337 if not linerange:
338 return None 338 return None
339 if len(linerange) > 1: 339 if len(linerange) > 1:
340 raise ErrorResponse(HTTP_BAD_REQUEST, 340 raise ErrorResponse(HTTP_BAD_REQUEST,
341 'redundant linerange parameter') 341 'redundant linerange parameter')
342 try: 342 try:
410 files=files, 410 files=files,
411 ) 411 )
412 return entry 412 return entry
413 413
414 def symrevorshortnode(req, ctx): 414 def symrevorshortnode(req, ctx):
415 if 'node' in req.form: 415 if 'node' in req.req.qsparams:
416 return templatefilters.revescape(req.form['node'][0]) 416 return templatefilters.revescape(req.req.qsparams['node'])
417 else: 417 else:
418 return short(ctx.node()) 418 return short(ctx.node())
419 419
420 def changesetentry(web, req, tmpl, ctx): 420 def changesetentry(web, req, tmpl, ctx):
421 '''Obtain a dictionary to be used to render the "changeset" template.''' 421 '''Obtain a dictionary to be used to render the "changeset" template.'''