271 'labels': u.configlist('web', 'labels', untrusted=True), |
271 'labels': u.configlist('web', 'labels', untrusted=True), |
272 } |
272 } |
273 |
273 |
274 yield row |
274 yield row |
275 |
275 |
|
276 def indexentries(ui, repos, wsgireq, req, stripecount, sortcolumn='', |
|
277 descending=False, subdir='', **map): |
|
278 |
|
279 rows = rawindexentries(ui, repos, wsgireq, req, subdir=subdir, **map) |
|
280 |
|
281 sortdefault = None, False |
|
282 |
|
283 if sortcolumn and sortdefault != (sortcolumn, descending): |
|
284 sortkey = '%s_sort' % sortcolumn |
|
285 rows = sorted(rows, key=lambda x: x[sortkey], |
|
286 reverse=descending) |
|
287 |
|
288 for row, parity in zip(rows, paritygen(stripecount)): |
|
289 row['parity'] = parity |
|
290 yield row |
|
291 |
276 class hgwebdir(object): |
292 class hgwebdir(object): |
277 """HTTP server for multiple repositories. |
293 """HTTP server for multiple repositories. |
278 |
294 |
279 Given a configuration, different repositories will be served depending |
295 Given a configuration, different repositories will be served depending |
280 on the request path. |
296 on the request path. |
470 tmpl = None |
486 tmpl = None |
471 |
487 |
472 def makeindex(self, wsgireq, tmpl, subdir=""): |
488 def makeindex(self, wsgireq, tmpl, subdir=""): |
473 req = wsgireq.req |
489 req = wsgireq.req |
474 |
490 |
475 sortdefault = None, False |
|
476 def entries(sortcolumn="", descending=False, subdir="", **map): |
|
477 rows = rawindexentries(self.ui, self.repos, wsgireq, req, |
|
478 subdir=subdir, **map) |
|
479 |
|
480 if sortcolumn and sortdefault != (sortcolumn, descending): |
|
481 sortkey = '%s_sort' % sortcolumn |
|
482 rows = sorted(rows, key=lambda x: x[sortkey], |
|
483 reverse=descending) |
|
484 for row, parity in zip(rows, paritygen(self.stripecount)): |
|
485 row['parity'] = parity |
|
486 yield row |
|
487 |
|
488 self.refresh() |
491 self.refresh() |
489 sortable = ["name", "description", "contact", "lastchange"] |
492 sortable = ["name", "description", "contact", "lastchange"] |
490 sortcolumn, descending = sortdefault |
493 sortcolumn, descending = None, False |
491 if 'sort' in req.qsparams: |
494 if 'sort' in req.qsparams: |
492 sortcolumn = req.qsparams['sort'] |
495 sortcolumn = req.qsparams['sort'] |
493 descending = sortcolumn.startswith('-') |
496 descending = sortcolumn.startswith('-') |
494 if descending: |
497 if descending: |
495 sortcolumn = sortcolumn[1:] |
498 sortcolumn = sortcolumn[1:] |
501 and "-" or "", column)) |
504 and "-" or "", column)) |
502 for column in sortable] |
505 for column in sortable] |
503 |
506 |
504 self.refresh() |
507 self.refresh() |
505 self.updatereqenv(wsgireq.env) |
508 self.updatereqenv(wsgireq.env) |
|
509 |
|
510 entries = indexentries(self.ui, self.repos, wsgireq, req, |
|
511 self.stripecount, sortcolumn=sortcolumn, |
|
512 descending=descending, subdir=subdir) |
506 |
513 |
507 return tmpl("index", entries=entries, subdir=subdir, |
514 return tmpl("index", entries=entries, subdir=subdir, |
508 pathdef=hgweb_mod.makebreadcrumb('/' + subdir, self.prefix), |
515 pathdef=hgweb_mod.makebreadcrumb('/' + subdir, self.prefix), |
509 sortcolumn=sortcolumn, descending=descending, |
516 sortcolumn=sortcolumn, descending=descending, |
510 **dict(sort)) |
517 **dict(sort)) |