Mercurial > public > mercurial-scm > hg
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.''' |