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__": |