Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb.py @ 2173:d1943df604c4
Make hgwebdir columns sortable.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Mon, 01 May 2006 18:38:25 +0200 |
parents | 290534ee163c |
children | 3044a3fdae76 |
comparison
equal
deleted
inserted
replaced
2172:eba364839c67 | 2173:d1943df604c4 |
---|---|
1048 def archivelist(ui, nodeid, url): | 1048 def archivelist(ui, nodeid, url): |
1049 for i in ['zip', 'gz', 'bz2']: | 1049 for i in ['zip', 'gz', 'bz2']: |
1050 if ui.configbool("web", "allow" + i, False): | 1050 if ui.configbool("web", "allow" + i, False): |
1051 yield {"type" : i, "node": nodeid, "url": url} | 1051 yield {"type" : i, "node": nodeid, "url": url} |
1052 | 1052 |
1053 def entries(**map): | 1053 def entries(sortcolumn="", descending=False, **map): |
1054 rows = [] | |
1054 parity = 0 | 1055 parity = 0 |
1055 for name, path in self.repos: | 1056 for name, path in self.repos: |
1056 u = ui.ui() | 1057 u = ui.ui() |
1057 try: | 1058 try: |
1058 u.readconfig(os.path.join(path, '.hg', 'hgrc')) | 1059 u.readconfig(os.path.join(path, '.hg', 'hgrc')) |
1067 try: | 1068 try: |
1068 d = (get_mtime(path), util.makedate()[1]) | 1069 d = (get_mtime(path), util.makedate()[1]) |
1069 except OSError: | 1070 except OSError: |
1070 continue | 1071 continue |
1071 | 1072 |
1072 yield dict(contact=(get("ui", "username") or # preferred | 1073 contact = (get("ui", "username") or # preferred |
1073 get("web", "contact") or # deprecated | 1074 get("web", "contact") or # deprecated |
1074 get("web", "author", "unknown")), # also | 1075 get("web", "author", "")) # also |
1075 name=get("web", "name", name), | 1076 description = get("web", "description", "") |
1077 name = get("web", "name", name) | |
1078 row = dict(contact=contact or "unknown", | |
1079 contact_sort=contact.upper() or "unknown", | |
1080 name=name, | |
1081 name_sort=name.upper(), | |
1076 url=url, | 1082 url=url, |
1077 parity=parity, | 1083 description=description or "unknown", |
1078 shortdesc=get("web", "description", "unknown"), | 1084 description_sort=description.upper() or "unknown", |
1079 lastupdate=d, | 1085 lastchange=d, |
1086 lastchange_sort=d[1]-d[0], | |
1080 archives=archivelist(u, "tip", url)) | 1087 archives=archivelist(u, "tip", url)) |
1081 | 1088 if not sortcolumn: |
1082 parity = 1 - parity | 1089 # fast path for unsorted output |
1090 row['parity'] = parity | |
1091 parity = 1 - parity | |
1092 yield row | |
1093 else: | |
1094 rows.append((row["%s_sort" % sortcolumn], row)) | |
1095 if rows: | |
1096 rows.sort() | |
1097 if descending: | |
1098 rows.reverse() | |
1099 for key, row in rows: | |
1100 row['parity'] = parity | |
1101 parity = 1 - parity | |
1102 yield row | |
1083 | 1103 |
1084 virtual = req.env.get("PATH_INFO", "").strip('/') | 1104 virtual = req.env.get("PATH_INFO", "").strip('/') |
1085 if virtual: | 1105 if virtual: |
1086 real = dict(self.repos).get(virtual) | 1106 real = dict(self.repos).get(virtual) |
1087 if real: | 1107 if real: |
1098 static = os.path.join(templater.templatepath(), "static") | 1118 static = os.path.join(templater.templatepath(), "static") |
1099 fname = req.form['static'][0] | 1119 fname = req.form['static'][0] |
1100 req.write(staticfile(static, fname) | 1120 req.write(staticfile(static, fname) |
1101 or tmpl("error", error="%r not found" % fname)) | 1121 or tmpl("error", error="%r not found" % fname)) |
1102 else: | 1122 else: |
1103 req.write(tmpl("index", entries=entries)) | 1123 sortable = ["name", "description", "contact", "lastchange"] |
1124 sortcolumn = "" | |
1125 if req.form.has_key('sort'): | |
1126 sortcolumn = req.form['sort'][0] | |
1127 descending = sortcolumn.startswith('-') | |
1128 if descending: | |
1129 sortcolumn = sortcolumn[1:] | |
1130 if sortcolumn not in sortable: | |
1131 sortcolumn = "" | |
1132 | |
1133 sort = [("sort_%s" % column, | |
1134 "%s%s" % ((not descending and column == sortcolumn) | |
1135 and "-" or "", column)) | |
1136 for column in sortable] | |
1137 req.write(tmpl("index", entries=entries, | |
1138 sortcolumn=sortcolumn, descending=descending, | |
1139 **dict(sort))) |