comparison pylons_app/controllers/hg.py @ 56:bf1b64046c79

Added last change translation to 'time ago', added generation of enabled zip archives
author Marcin Kuzminski <marcin@python-blog.com>
date Fri, 09 Apr 2010 00:30:42 +0200
parents e00dccb6f211
children e96bc5a01490
comparison
equal deleted inserted replaced
55:e00dccb6f211 56:bf1b64046c79
12 from vcs.backends.hg import get_repositories 12 from vcs.backends.hg import get_repositories
13 except ImportError: 13 except ImportError:
14 print 'You have to import vcs module' 14 print 'You have to import vcs module'
15 from mercurial.util import matchdate, Abort, makedate 15 from mercurial.util import matchdate, Abort, makedate
16 from mercurial.hgweb.common import get_contact 16 from mercurial.hgweb.common import get_contact
17 17 from mercurial.templatefilters import age
18 log = logging.getLogger(__name__) 18 log = logging.getLogger(__name__)
19 19
20 class HgController(BaseController): 20 class HgController(BaseController):
21 21
22 def __before__(self): 22 def __before__(self):
30 cl_path = os.path.join(spath, "00changelog.i") 30 cl_path = os.path.join(spath, "00changelog.i")
31 if os.path.exists(cl_path): 31 if os.path.exists(cl_path):
32 return os.stat(cl_path).st_mtime 32 return os.stat(cl_path).st_mtime
33 else: 33 else:
34 return os.stat(spath).st_mtime 34 return os.stat(spath).st_mtime
35 35
36 def archivelist(ui, nodeid, url):
37 allowed = g.baseui.configlist("web", "allow_archive", untrusted=True)
38 for i in [('zip', '.zip'), ('gz', '.tar.gz'), ('bz2', '.tar.bz2')]:
39 if i[0] in allowed or ui.configbool("web", "allow" + i[0],
40 untrusted=True):
41 yield {"type" : i[0], "extension": i[1],
42 "node": nodeid, "url": url}
43
36 for name, r in get_repositories(g.paths[0][0], g.paths[0][1]).items(): 44 for name, r in get_repositories(g.paths[0][0], g.paths[0][1]).items():
37 last_change = (get_mtime(r.spath), makedate()[1]) 45 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') 46 tip = r.changectx('tip')
43 tmp['tip'] = tip.__str__(), 47 tmp_d = {}
44 tmp['rev'] = tip.rev() 48 tmp_d['name'] = name
45 tmp['contact'] = get_contact(r.ui.config) 49 tmp_d['desc'] = r.ui.config('web', 'description', 'Unknown', untrusted=True)
46 c.repos_list.append(tmp) 50 tmp_d['last_change'] = age(last_change)
51 tmp_d['tip'] = str(tip)
52 tmp_d['rev'] = tip.rev()
53 tmp_d['contact'] = get_contact(r.ui.config)
54 tmp_d['repo_archives'] = archivelist(r.ui, "tip", 'sa')
55
56 c.repos_list.append(tmp_d)
47 return render('/index.html') 57 return render('/index.html')
48 58
49 def view(self, *args, **kwargs): 59 def view(self, *args, **kwargs):
50 #TODO: reimplement this not tu use hgwebdir 60 #TODO: reimplement this not tu use hgwebdir
51 response = g.hgapp(request.environ, self.start_response) 61 response = g.hgapp(request.environ, self.start_response)