review/web_ui.py @ 78cd41b87ea2 webui
More small style changes.
| author | Steve Losh <steve@stevelosh.com> |
|---|---|
| date | Tue, 13 Oct 2009 21:12:15 -0400 |
| parents | 590fb7bae0a8 |
| children | efc3c9173ce1 |
"""The review extension's web UI.""" import sys, os import api from mercurial import cmdutil package_path = os.path.split(os.path.realpath(__file__))[0] template_path = os.path.join(package_path, 'web_templates') media_path = os.path.join(package_path, 'web_media') top_path = os.path.split(package_path)[0] bundled_path = os.path.join(top_path, 'bundled') webpy_path = os.path.join(bundled_path, 'webpy') sys.path.insert(0, webpy_path) import web _rd = None urls = ( '/', 'index', '/media/([^/]*)', 'media', '/review/([\da-f]{12})/?', 'review', ) from mercurial.node import short g = { 'node_short': short, 'basename': os.path.basename, } render = web.template.render(template_path, globals=g) LOG_PAGE_LEN = 15 class index: def GET(self): rev_max = _rd.target['tip'].rev() rev_min = rev_max - LOG_PAGE_LEN if rev_max >= LOG_PAGE_LEN else 0 revs = (_rd.target[r] for r in xrange(rev_max, rev_min, -1)) return render.index(_rd, revs) class review: def GET(self, node_short): return render.review(_rd, _rd[node_short]) class media: def GET(self, fname): if '..' in fname: return '' else: with open(os.path.join(media_path, fname)) as f: content = f.read() return content def load_interface(ui, repo): global _rd _rd = api.ReviewDatastore(ui, repo) sys.argv = sys.argv[:1] # Seriously, web.py? This is such a hack. app = web.application(urls, globals()) app.run()