comparison mercurial/hgweb.py @ 136:0e8d60d2bb2b

added annotate fixed error page to get tmpl_dir
author jake@edge2.net
date Sat, 21 May 2005 22:43:14 -0700
parents c0faf50822ea
children b45b1b00fc9e
comparison
equal deleted inserted replaced
135:c0faf50822ea 136:0e8d60d2bb2b
80 else: 80 else:
81 print line 81 print line
82 print '</pre>' 82 print '</pre>'
83 83
84 class errpage(page): 84 class errpage(page):
85 def __init__(self): 85 def __init__(self, tmpl_dir):
86 page.__init__(self, title="Mercurial Web Error Page") 86 page.__init__(self, tmpl_dir, title="Mercurial Web Error Page")
87 87
88 class change_list(page): 88 class change_list(page):
89 def __init__(self, repo, tmpl_dir, reponame, numchanges = 50): 89 def __init__(self, repo, tmpl_dir, reponame, numchanges = 50):
90 page.__init__(self, tmpl_dir) 90 page.__init__(self, tmpl_dir)
91 self.repo = repo 91 self.repo = repo
202 self.nodestr = node 202 self.nodestr = node
203 self.node = hg.bin(node) 203 self.node = hg.bin(node)
204 print '<div class="filename">%s (%s)</div>' % \ 204 print '<div class="filename">%s (%s)</div>' % \
205 (cgi.escape(self.fn), self.nodestr, ) 205 (cgi.escape(self.fn), self.nodestr, )
206 print '<a href="?cmd=hist;fn=%s">history</a><br />' % self.fn 206 print '<a href="?cmd=hist;fn=%s">history</a><br />' % self.fn
207 print '<a href="?cmd=ann;fn=%s;nd=%s">annotate</a><br />' % \
208 (self.fn, self.nodestr)
207 209
208 def content(self): 210 def content(self):
209 print '<pre>' 211 print '<pre>'
210 print cgi.escape(self.repo.file(self.fn).read(self.node)) 212 print cgi.escape(self.repo.file(self.fn).read(self.node))
213 print '</pre>'
214
215 class annpage(page):
216 def __init__(self, repo, tmpl_dir, fn, node):
217 page.__init__(self, tmpl_dir)
218 self.repo = repo
219 self.fn = fn
220 self.nodestr = node
221 self.node = hg.bin(node)
222 print '<div class="annotation">Annotated: %s (%s)</div>' % \
223 (cgi.escape(self.fn), self.nodestr, )
224
225 def content(self):
226 print '<pre>'
227 for n, l in self.repo.file(self.fn).annotate(self.node):
228 cnode = self.repo.changelog.lookup(n)
229 write(self.tmpl.do_page('annline.tmpl', cnode=hg.hex(cnode),
230 cnum='% 6s' % n, fn=self.fn, line=cgi.escape(l[:-1])))
211 print '</pre>' 231 print '</pre>'
212 232
213 class mfpage(page): 233 class mfpage(page):
214 def __init__(self, repo, tmpl_dir, node): 234 def __init__(self, repo, tmpl_dir, node):
215 page.__init__(self, tmpl_dir) 235 page.__init__(self, tmpl_dir)
283 page.content(hi = int(hi[0])) 303 page.content(hi = int(hi[0]))
284 page.endpage() 304 page.endpage()
285 305
286 elif args['cmd'][0] == 'chkin': 306 elif args['cmd'][0] == 'chkin':
287 if not args.has_key('nd'): 307 if not args.has_key('nd'):
288 page = errpage() 308 page = errpage(self.tmpl_dir)
289 print '<div class="errmsg">No Node!</div>' 309 print '<div class="errmsg">No Node!</div>'
290 else: 310 else:
291 page = checkin(repo, self.tmpl_dir, args['nd'][0]) 311 page = checkin(repo, self.tmpl_dir, args['nd'][0])
292 page.content() 312 page.content()
293 page.endpage() 313 page.endpage()
294 314
295 elif args['cmd'][0] == 'file': 315 elif args['cmd'][0] == 'file':
296 if not (args.has_key('nd') and args.has_key('fn')) and \ 316 if not (args.has_key('nd') and args.has_key('fn')) and \
297 not (args.has_key('cs') and args.has_key('fn')): 317 not (args.has_key('cs') and args.has_key('fn')):
298 page = errpage() 318 page = errpage(self.tmpl_dir)
299 print '<div class="errmsg">Invalid Args!</div>' 319 print '<div class="errmsg">Invalid Args!</div>'
300 else: 320 else:
301 if args.has_key('nd'): 321 if args.has_key('nd'):
302 page = filepage(repo, self.tmpl_dir, 322 page = filepage(repo, self.tmpl_dir,
303 args['fn'][0], node=args['nd'][0]) 323 args['fn'][0], node=args['nd'][0])
307 page.content() 327 page.content()
308 page.endpage() 328 page.endpage()
309 329
310 elif args['cmd'][0] == 'mf': 330 elif args['cmd'][0] == 'mf':
311 if not args.has_key('nd'): 331 if not args.has_key('nd'):
312 page = errpage() 332 page = errpage(self.tmpl_dir)
313 print '<div class="errmsg">No Node!</div>' 333 print '<div class="errmsg">No Node!</div>'
314 else: 334 else:
315 page = mfpage(repo, self.tmpl_dir, args['nd'][0]) 335 page = mfpage(repo, self.tmpl_dir, args['nd'][0])
316 page.content() 336 page.content()
317 page.endpage() 337 page.endpage()
318 338
319 elif args['cmd'][0] == 'hist': 339 elif args['cmd'][0] == 'hist':
320 if not args.has_key('fn'): 340 if not args.has_key('fn'):
321 page = errpage() 341 page = errpage(self.tmpl_dir)
322 print '<div class="errmsg">No Filename!</div>' 342 print '<div class="errmsg">No Filename!</div>'
323 else: 343 else:
324 page = histpage(repo, self.tmpl_dir, args['fn'][0]) 344 page = histpage(repo, self.tmpl_dir, args['fn'][0])
345 page.content()
346 page.endpage()
347
348 elif args['cmd'][0] == 'ann':
349 if not args.has_key('fn'):
350 page = errpage(self.tmpl_dir)
351 print '<div class="errmsg">No Filename!</div>'
352 elif not args.has_key('nd'):
353 page = errpage(self.tmpl_dir)
354 print '<div class="errmsg">No Node!</div>'
355 else:
356 page = annpage(repo, self.tmpl_dir, args['fn'][0],
357 args['nd'][0])
325 page.content() 358 page.content()
326 page.endpage() 359 page.endpage()
327 360
328 elif args['cmd'][0] == 'branches': 361 elif args['cmd'][0] == 'branches':
329 httphdr("text/plain") 362 httphdr("text/plain")
353 sys.stdout.write(z.compress(chunk)) 386 sys.stdout.write(z.compress(chunk))
354 387
355 sys.stdout.write(z.flush()) 388 sys.stdout.write(z.flush())
356 389
357 else: 390 else:
358 page = errpage() 391 page = errpage(self.tmpl_dir)
359 print '<div class="errmsg">unknown command: %s</div>' % \ 392 print '<div class="errmsg">unknown command: %s</div>' % \
360 cgi.escape(args['cmd'][0]) 393 cgi.escape(args['cmd'][0])
361 page.endpage() 394 page.endpage()
362 395
363 if __name__ == "__main__": 396 if __name__ == "__main__":