mercurial/hgweb.py
changeset 136 0e8d60d2bb2b
parent 135 c0faf50822ea
child 137 b45b1b00fc9e
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__":