comparison mercurial/hgweb.py @ 1062:6d5a62a549fa

pep-0008 cleanup - Don't use spaces around the '=' sign when used to indicate a keyword argument or a default parameter value.
author benoit.boissinot@ens-lyon.fr
date Fri, 26 Aug 2005 13:06:58 +0200
parents bc806ba72959
children 58eefdfb8472
comparison
equal deleted inserted replaced
1061:fed8d078840b 1062:6d5a62a549fa
63 write(part) 63 write(part)
64 else: 64 else:
65 sys.stdout.write(str(thing)) 65 sys.stdout.write(str(thing))
66 66
67 class templater: 67 class templater:
68 def __init__(self, mapfile, filters = {}, defaults = {}): 68 def __init__(self, mapfile, filters={}, defaults={}):
69 self.cache = {} 69 self.cache = {}
70 self.map = {} 70 self.map = {}
71 self.base = os.path.dirname(mapfile) 71 self.base = os.path.dirname(mapfile)
72 self.filters = filters 72 self.filters = filters
73 self.defaults = defaults 73 self.defaults = defaults
90 tmpl = self.cache[t] 90 tmpl = self.cache[t]
91 except KeyError: 91 except KeyError:
92 tmpl = self.cache[t] = file(self.map[t]).read() 92 tmpl = self.cache[t] = file(self.map[t]).read()
93 return self.template(tmpl, self.filters, **m) 93 return self.template(tmpl, self.filters, **m)
94 94
95 def template(self, tmpl, filters = {}, **map): 95 def template(self, tmpl, filters={}, **map):
96 while tmpl: 96 while tmpl:
97 m = re.search(r"#([a-zA-Z0-9]+)((%[a-zA-Z0-9]+)*)((\|[a-zA-Z0-9]+)*)#", tmpl) 97 m = re.search(r"#([a-zA-Z0-9]+)((%[a-zA-Z0-9]+)*)((\|[a-zA-Z0-9]+)*)#", tmpl)
98 if m: 98 if m:
99 yield tmpl[:m.start(0)] 99 yield tmpl[:m.start(0)]
100 v = map.get(m.group(1), "") 100 v = map.get(m.group(1), "")
160 def date(self, cs): 160 def date(self, cs):
161 return time.asctime(time.gmtime(float(cs[2].split(' ')[0]))) 161 return time.asctime(time.gmtime(float(cs[2].split(' ')[0])))
162 162
163 def listfiles(self, files, mf): 163 def listfiles(self, files, mf):
164 for f in files[:self.maxfiles]: 164 for f in files[:self.maxfiles]:
165 yield self.t("filenodelink", node = hex(mf[f]), file = f) 165 yield self.t("filenodelink", node=hex(mf[f]), file=f)
166 if len(files) > self.maxfiles: 166 if len(files) > self.maxfiles:
167 yield self.t("fileellipses") 167 yield self.t("fileellipses")
168 168
169 def listfilediffs(self, files, changeset): 169 def listfilediffs(self, files, changeset):
170 for f in files[:self.maxfiles]: 170 for f in files[:self.maxfiles]:
171 yield self.t("filedifflink", node = hex(changeset), file = f) 171 yield self.t("filedifflink", node=hex(changeset), file=f)
172 if len(files) > self.maxfiles: 172 if len(files) > self.maxfiles:
173 yield self.t("fileellipses") 173 yield self.t("fileellipses")
174 174
175 def parents(self, t1, nodes=[], rev=None,**args): 175 def parents(self, t1, nodes=[], rev=None,**args):
176 if not rev: rev = lambda x: "" 176 if not rev: rev = lambda x: ""
177 for node in nodes: 177 for node in nodes:
178 if node != nullid: 178 if node != nullid:
179 yield self.t(t1, node = hex(node), rev = rev(node), **args) 179 yield self.t(t1, node=hex(node), rev=rev(node), **args)
180 180
181 def showtag(self, t1, node=nullid, **args): 181 def showtag(self, t1, node=nullid, **args):
182 for t in self.repo.nodetags(node): 182 for t in self.repo.nodetags(node):
183 yield self.t(t1, tag = t, **args) 183 yield self.t(t1, tag=t, **args)
184 184
185 def diff(self, node1, node2, files): 185 def diff(self, node1, node2, files):
186 def filterfiles(list, files): 186 def filterfiles(list, files):
187 l = [ x for x in list if x in files ] 187 l = [ x for x in list if x in files ]
188 188
201 parity[0] = 1 - parity[0] 201 parity[0] = 1 - parity[0]
202 202
203 def prettyprintlines(diff): 203 def prettyprintlines(diff):
204 for l in diff.splitlines(1): 204 for l in diff.splitlines(1):
205 if l.startswith('+'): 205 if l.startswith('+'):
206 yield self.t("difflineplus", line = l) 206 yield self.t("difflineplus", line=l)
207 elif l.startswith('-'): 207 elif l.startswith('-'):
208 yield self.t("difflineminus", line = l) 208 yield self.t("difflineminus", line=l)
209 elif l.startswith('@'): 209 elif l.startswith('@'):
210 yield self.t("difflineat", line = l) 210 yield self.t("difflineat", line=l)
211 else: 211 else:
212 yield self.t("diffline", line = l) 212 yield self.t("diffline", line=l)
213 213
214 r = self.repo 214 r = self.repo
215 cl = r.changelog 215 cl = r.changelog
216 mf = r.manifest 216 mf = r.manifest
217 change1 = cl.read(node1) 217 change1 = cl.read(node1)
238 tn = None 238 tn = None
239 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn) 239 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f), f, tn)
240 240
241 def changelog(self, pos): 241 def changelog(self, pos):
242 def changenav(**map): 242 def changenav(**map):
243 def seq(factor = 1): 243 def seq(factor=1):
244 yield 1 * factor 244 yield 1 * factor
245 yield 3 * factor 245 yield 3 * factor
246 #yield 5 * factor 246 #yield 5 * factor
247 for f in seq(factor * 10): 247 for f in seq(factor * 10):
248 yield f 248 yield f
294 start = max(0, pos - self.maxchanges + 1) 294 start = max(0, pos - self.maxchanges + 1)
295 end = min(count, start + self.maxchanges) 295 end = min(count, start + self.maxchanges)
296 pos = end - 1 296 pos = end - 1
297 297
298 yield self.t('changelog', 298 yield self.t('changelog',
299 changenav = changenav, 299 changenav=changenav,
300 manifest = hex(mf), 300 manifest=hex(mf),
301 rev = pos, changesets = count, entries = changelist) 301 rev=pos, changesets=count, entries=changelist)
302 302
303 def search(self, query): 303 def search(self, query):
304 304
305 def changelist(**map): 305 def changelist(**map):
306 cl = self.repo.changelog 306 cl = self.repo.changelog
332 hn = hex(n) 332 hn = hex(n)
333 t = float(changes[2].split(' ')[0]) 333 t = float(changes[2].split(' ')[0])
334 334
335 yield self.t( 335 yield self.t(
336 'searchentry', 336 'searchentry',
337 parity = count & 1, 337 parity=count & 1,
338 author = changes[1], 338 author=changes[1],
339 parent = self.parents("changelogparent", 339 parent=self.parents("changelogparent",
340 cl.parents(n), cl.rev), 340 cl.parents(n), cl.rev),
341 changelogtag = self.showtag("changelogtag",n), 341 changelogtag=self.showtag("changelogtag",n),
342 manifest = hex(changes[0]), 342 manifest=hex(changes[0]),
343 desc = changes[4], 343 desc=changes[4],
344 date = t, 344 date=t,
345 files = self.listfilediffs(changes[3], n), 345 files=self.listfilediffs(changes[3], n),
346 rev = i, 346 rev=i,
347 node = hn) 347 node=hn)
348 348
349 if count >= self.maxchanges: break 349 if count >= self.maxchanges: break
350 350
351 cl = self.repo.changelog 351 cl = self.repo.changelog
352 mf = cl.read(cl.tip())[0] 352 mf = cl.read(cl.tip())[0]
353 353
354 yield self.t('search', 354 yield self.t('search',
355 query = query, 355 query=query,
356 manifest = hex(mf), 356 manifest=hex(mf),
357 entries = changelist) 357 entries=changelist)
358 358
359 def changeset(self, nodeid): 359 def changeset(self, nodeid):
360 n = bin(nodeid) 360 n = bin(nodeid)
361 cl = self.repo.changelog 361 cl = self.repo.changelog
362 changes = cl.read(n) 362 changes = cl.read(n)
365 365
366 files = [] 366 files = []
367 mf = self.repo.manifest.read(changes[0]) 367 mf = self.repo.manifest.read(changes[0])
368 for f in changes[3]: 368 for f in changes[3]:
369 files.append(self.t("filenodelink", 369 files.append(self.t("filenodelink",
370 filenode = hex(mf.get(f, nullid)), file = f)) 370 filenode = hex(mf.get(f, nullid)), file=f))
371 371
372 def diff(**map): 372 def diff(**map):
373 yield self.diff(p1, n, None) 373 yield self.diff(p1, n, None)
374 374
375 yield self.t('changeset', 375 yield self.t('changeset',
376 diff = diff, 376 diff=diff,
377 rev = cl.rev(n), 377 rev=cl.rev(n),
378 node = nodeid, 378 node=nodeid,
379 parent = self.parents("changesetparent", 379 parent=self.parents("changesetparent",
380 cl.parents(n), cl.rev), 380 cl.parents(n), cl.rev),
381 changesettag = self.showtag("changesettag",n), 381 changesettag=self.showtag("changesettag",n),
382 manifest = hex(changes[0]), 382 manifest=hex(changes[0]),
383 author = changes[1], 383 author=changes[1],
384 desc = changes[4], 384 desc=changes[4],
385 date = t, 385 date=t,
386 files = files) 386 files=files)
387 387
388 def filelog(self, f, filenode): 388 def filelog(self, f, filenode):
389 cl = self.repo.changelog 389 cl = self.repo.changelog
390 fl = self.repo.file(f) 390 fl = self.repo.file(f)
391 count = fl.count() 391 count = fl.count()
415 parity = 1 - parity 415 parity = 1 - parity
416 416
417 for e in l: yield e 417 for e in l: yield e
418 418
419 yield self.t("filelog", 419 yield self.t("filelog",
420 file = f, 420 file=f,
421 filenode = filenode, 421 filenode=filenode,
422 entries = entries) 422 entries=entries)
423 423
424 def filerevision(self, f, node): 424 def filerevision(self, f, node):
425 fl = self.repo.file(f) 425 fl = self.repo.file(f)
426 n = bin(node) 426 n = bin(node)
427 text = fl.read(n) 427 text = fl.read(n)
436 for l, t in enumerate(text.splitlines(1)): 436 for l, t in enumerate(text.splitlines(1)):
437 yield {"line": t, 437 yield {"line": t,
438 "linenumber": "% 6d" % (l + 1), 438 "linenumber": "% 6d" % (l + 1),
439 "parity": l & 1} 439 "parity": l & 1}
440 440
441 yield self.t("filerevision", file = f, 441 yield self.t("filerevision", file=f,
442 filenode = node, 442 filenode=node,
443 path = up(f), 443 path=up(f),
444 text = lines(), 444 text=lines(),
445 rev = changerev, 445 rev=changerev,
446 node = hex(cn), 446 node=hex(cn),
447 manifest = hex(mfn), 447 manifest=hex(mfn),
448 author = cs[1], 448 author=cs[1],
449 date = t, 449 date=t,
450 parent = self.parents("filerevparent", 450 parent=self.parents("filerevparent",
451 fl.parents(n), fl.rev, file=f), 451 fl.parents(n), fl.rev, file=f),
452 permissions = self.repo.manifest.readflags(mfn)[f]) 452 permissions=self.repo.manifest.readflags(mfn)[f])
453 453
454 def fileannotate(self, f, node): 454 def fileannotate(self, f, node):
455 bcache = {} 455 bcache = {}
456 ncache = {} 456 ncache = {}
457 fl = self.repo.file(f) 457 fl = self.repo.file(f)
564 "manifest": mnode, 564 "manifest": mnode,
565 "basename": f[:-1]} 565 "basename": f[:-1]}
566 parity = 1 - parity 566 parity = 1 - parity
567 567
568 yield self.t("manifest", 568 yield self.t("manifest",
569 manifest = mnode, 569 manifest=mnode,
570 rev = rev, 570 rev=rev,
571 node = hex(node), 571 node=hex(node),
572 path = path, 572 path=path,
573 up = up(path), 573 up=up(path),
574 fentries = filelist, 574 fentries=filelist,
575 dentries = dirlist) 575 dentries=dirlist)
576 576
577 def tags(self): 577 def tags(self):
578 cl = self.repo.changelog 578 cl = self.repo.changelog
579 mf = cl.read(cl.tip())[0] 579 mf = cl.read(cl.tip())[0]
580 580
588 "tag": k, 588 "tag": k,
589 "node": hex(n)} 589 "node": hex(n)}
590 parity = 1 - parity 590 parity = 1 - parity
591 591
592 yield self.t("tags", 592 yield self.t("tags",
593 manifest = hex(mf), 593 manifest=hex(mf),
594 entries = entries) 594 entries=entries)
595 595
596 def filediff(self, file, changeset): 596 def filediff(self, file, changeset):
597 n = bin(changeset) 597 n = bin(changeset)
598 cl = self.repo.changelog 598 cl = self.repo.changelog
599 p1 = cl.parents(n)[0] 599 p1 = cl.parents(n)[0]
602 602
603 def diff(**map): 603 def diff(**map):
604 yield self.diff(p1, n, file) 604 yield self.diff(p1, n, file)
605 605
606 yield self.t("filediff", 606 yield self.t("filediff",
607 file = file, 607 file=file,
608 filenode = hex(mf.get(file, nullid)), 608 filenode=hex(mf.get(file, nullid)),
609 node = changeset, 609 node=changeset,
610 rev = self.repo.changelog.rev(n), 610 rev=self.repo.changelog.rev(n),
611 parent = self.parents("filediffparent", 611 parent=self.parents("filediffparent",
612 cl.parents(n), cl.rev), 612 cl.parents(n), cl.rev),
613 diff = diff) 613 diff=diff)
614 614
615 # add tags to things 615 # add tags to things
616 # tags -> list of changesets corresponding to tags 616 # tags -> list of changesets corresponding to tags
617 # find tag, changeset, file 617 # find tag, changeset, file
618 618
641 uri = os.environ["REQUEST_URI"] 641 uri = os.environ["REQUEST_URI"]
642 if "?" in uri: uri = uri.split("?")[0] 642 if "?" in uri: uri = uri.split("?")[0]
643 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri) 643 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri)
644 644
645 self.t = templater(m, common_filters, 645 self.t = templater(m, common_filters,
646 {"url":url, 646 {"url": url,
647 "repo":self.reponame, 647 "repo": self.reponame,
648 "header":header, 648 "header": header,
649 "footer":footer, 649 "footer": footer,
650 }) 650 })
651 651
652 if not args.has_key('cmd'): 652 if not args.has_key('cmd'):
653 args['cmd'] = [self.t.cache['default'],] 653 args['cmd'] = [self.t.cache['default'],]
654 654
825 if use_ipv6: 825 if use_ipv6:
826 return IPv6HTTPServer((address, port), hgwebhandler) 826 return IPv6HTTPServer((address, port), hgwebhandler)
827 else: 827 else:
828 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) 828 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler)
829 829
830 def server(path, name, templates, address, port, use_ipv6 = False, 830 def server(path, name, templates, address, port, use_ipv6=False,
831 accesslog = sys.stdout, errorlog = sys.stderr): 831 accesslog=sys.stdout, errorlog=sys.stderr):
832 httpd = create_server(path, name, templates, address, port, use_ipv6, 832 httpd = create_server(path, name, templates, address, port, use_ipv6,
833 accesslog, errorlog) 833 accesslog, errorlog)
834 httpd.serve_forever() 834 httpd.serve_forever()
835 835
836 # This is a stopgap 836 # This is a stopgap
877 return default 877 return default
878 878
879 url = os.environ["REQUEST_URI"] + "/" + v 879 url = os.environ["REQUEST_URI"] + "/" + v
880 url = url.replace("//", "/") 880 url = url.replace("//", "/")
881 881
882 yield dict(author = get("web", "author", "unknown"), 882 yield dict(author=get("web", "author", "unknown"),
883 name = get("web", "name", v), 883 name=get("web", "name", v),
884 url = url, 884 url=url,
885 parity = parity, 885 parity=parity,
886 shortdesc = get("web", "description", "unknown"), 886 shortdesc=get("web", "description", "unknown"),
887 lastupdate = os.stat(os.path.join(r, ".hg", 887 lastupdate=os.stat(os.path.join(r, ".hg",
888 "00changelog.d")).st_mtime) 888 "00changelog.d")).st_mtime)
889 889
890 parity = 1 - parity 890 parity = 1 - parity
891 891
892 write(tmpl("index", entries = entries)) 892 write(tmpl("index", entries=entries))