Mercurial > public > src > rhodecode
comparison pylons_app/controllers/hg.py @ 55:e00dccb6f211
Implemented index page using vcs
author | Marcin Kuzminski <marcin@python-blog.com> |
---|---|
date | Thu, 08 Apr 2010 22:59:49 +0200 |
parents | 2e1247e62c5b |
children | bf1b64046c79 |
comparison
equal
deleted
inserted
replaced
54:fdf6dc356d45 | 55:e00dccb6f211 |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | 2 # -*- coding: utf-8 -*- |
3 import logging | 3 import logging |
4 import os | |
4 from pylons_app.lib.base import BaseController | 5 from pylons_app.lib.base import BaseController |
5 from pylons import tmpl_context as c, app_globals as g, session, request, config | 6 from pylons import tmpl_context as c, app_globals as g, session, request, config |
6 from pylons_app.lib import helpers as h | 7 from pylons_app.lib import helpers as h |
7 from mako.template import Template | 8 from mako.template import Template |
8 from pylons.controllers.util import abort | 9 from pylons.controllers.util import abort |
10 from pylons_app.lib.base import BaseController, render | |
11 try: | |
12 from vcs.backends.hg import get_repositories | |
13 except ImportError: | |
14 print 'You have to import vcs module' | |
15 from mercurial.util import matchdate, Abort, makedate | |
16 from mercurial.hgweb.common import get_contact | |
9 | 17 |
10 log = logging.getLogger(__name__) | 18 log = logging.getLogger(__name__) |
11 | 19 |
12 class HgController(BaseController): | 20 class HgController(BaseController): |
13 | 21 |
14 def __before__(self): | 22 def __before__(self): |
15 c.repos_prefix = config['repos_name'] | 23 c.repos_prefix = config['repos_name'] |
24 c.staticurl = g.statics | |
25 | |
26 def index(self): | |
27 c.repos_list = [] | |
28 | |
29 def get_mtime(spath): | |
30 cl_path = os.path.join(spath, "00changelog.i") | |
31 if os.path.exists(cl_path): | |
32 return os.stat(cl_path).st_mtime | |
33 else: | |
34 return os.stat(spath).st_mtime | |
35 | |
36 for name, r in get_repositories(g.paths[0][0], g.paths[0][1]).items(): | |
37 last_change = (get_mtime(r.spath), makedate()[1]) | |
38 tmp = {} | |
39 tmp['name'] = name | |
40 tmp['desc'] = r.ui.config('web', 'description', 'Unknown', untrusted=True) | |
41 tmp['last_change'] = last_change, | |
42 tip = r.changectx('tip') | |
43 tmp['tip'] = tip.__str__(), | |
44 tmp['rev'] = tip.rev() | |
45 tmp['contact'] = get_contact(r.ui.config) | |
46 c.repos_list.append(tmp) | |
47 return render('/index.html') | |
16 | 48 |
17 def view(self, *args, **kwargs): | 49 def view(self, *args, **kwargs): |
50 #TODO: reimplement this not tu use hgwebdir | |
18 response = g.hgapp(request.environ, self.start_response) | 51 response = g.hgapp(request.environ, self.start_response) |
19 | 52 |
20 http_accept = request.environ.get('HTTP_ACCEPT', False) | 53 http_accept = request.environ.get('HTTP_ACCEPT', False) |
21 if not http_accept: | 54 if not http_accept: |
22 return abort(status_code=400, detail='no http accept in header') | 55 return abort(status_code=400, detail='no http accept in header') |