diff 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
line wrap: on
line diff
--- a/pylons_app/controllers/hg.py	Thu Apr 08 22:59:49 2010 +0200
+++ b/pylons_app/controllers/hg.py	Fri Apr 09 00:30:42 2010 +0200
@@ -14,7 +14,7 @@
     print 'You have to import vcs module'
 from mercurial.util import matchdate, Abort, makedate
 from mercurial.hgweb.common import get_contact
-
+from mercurial.templatefilters import age
 log = logging.getLogger(__name__)
 
 class HgController(BaseController):
@@ -32,18 +32,28 @@
                 return os.stat(cl_path).st_mtime
             else:
                 return os.stat(spath).st_mtime   
-                
+        
+        def archivelist(ui, nodeid, url):
+            allowed = g.baseui.configlist("web", "allow_archive", untrusted=True)
+            for i in [('zip', '.zip'), ('gz', '.tar.gz'), ('bz2', '.tar.bz2')]:
+                if i[0] in allowed or ui.configbool("web", "allow" + i[0],
+                                                    untrusted=True):
+                    yield {"type" : i[0], "extension": i[1],
+                           "node": nodeid, "url": url}
+                                    
         for name, r in get_repositories(g.paths[0][0], g.paths[0][1]).items():
             last_change = (get_mtime(r.spath), makedate()[1])
-            tmp = {}
-            tmp['name'] = name
-            tmp['desc'] = r.ui.config('web', 'description', 'Unknown', untrusted=True)
-            tmp['last_change'] = last_change,
             tip = r.changectx('tip')
-            tmp['tip'] = tip.__str__(),
-            tmp['rev'] = tip.rev()
-            tmp['contact'] = get_contact(r.ui.config)
-            c.repos_list.append(tmp)
+            tmp_d = {}
+            tmp_d['name'] = name
+            tmp_d['desc'] = r.ui.config('web', 'description', 'Unknown', untrusted=True)
+            tmp_d['last_change'] = age(last_change)
+            tmp_d['tip'] = str(tip)
+            tmp_d['rev'] = tip.rev()
+            tmp_d['contact'] = get_contact(r.ui.config)
+            tmp_d['repo_archives'] = archivelist(r.ui, "tip", 'sa')
+            
+            c.repos_list.append(tmp_d)
         return render('/index.html')
 
     def view(self, *args, **kwargs):