mercurial/hgweb/hgwebdir_mod.py
changeset 36893 455918512ed2
parent 36892 f370f1b4f12c
child 36894 ee395147bb28
equal deleted inserted replaced
36892:f370f1b4f12c 36893:455918512ed2
   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))