changeset 1440:b074dfa51292 beta

implements #195 added closed branches to detailed branches view
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 06 Aug 2011 23:13:23 +0300
parents 828639811cdc
children b596a0e63466
files rhodecode/controllers/branches.py rhodecode/templates/branches/branches_data.html
diffstat 2 files changed, 55 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/branches.py	Fri Aug 05 21:21:51 2011 +0300
+++ b/rhodecode/controllers/branches.py	Sat Aug 06 23:13:23 2011 +0300
@@ -26,11 +26,12 @@
 import logging
 
 from pylons import tmpl_context as c
+import binascii
 
 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
 from rhodecode.lib.base import BaseRepoController, render
 from rhodecode.lib.odict import OrderedDict
-
+from rhodecode.lib import safe_unicode
 log = logging.getLogger(__name__)
 
 
@@ -44,8 +45,34 @@
 
     def index(self):
 
-        c.repo_branches = OrderedDict()
-        for name, hash_ in c.rhodecode_repo.branches.items():
-            c.repo_branches[name] = c.rhodecode_repo.get_changeset(hash_)
+        def _branchtags(localrepo):
+
+            bt = {}
+            bt_closed = {}
+
+            for bn, heads in localrepo.branchmap().iteritems():
+                tip = heads[-1]
+                if 'close' not in localrepo.changelog.read(tip)[5]:
+                    bt[bn] = tip
+                else:
+                    bt_closed[bn] = tip
+            return bt, bt_closed
+
+
+        bt, bt_closed = _branchtags(c.rhodecode_repo._repo)
+        cs_g = c.rhodecode_repo.get_changeset
+        _branches = [(safe_unicode(n), cs_g(binascii.hexlify(h)),) for n, h in
+                     bt.items()]
+
+        _closed_branches = [(safe_unicode(n), cs_g(binascii.hexlify(h)),) for n, h in
+                     bt_closed.items()]
+
+        c.repo_branches = OrderedDict(sorted(_branches,
+                                             key=lambda ctx: ctx[0],
+                                             reverse=False))
+        c.repo_closed_branches = OrderedDict(sorted(_closed_branches,
+                                                    key=lambda ctx: ctx[0],
+                                                    reverse=False))
+
 
         return render('branches/branches.html')
--- a/rhodecode/templates/branches/branches_data.html	Fri Aug 05 21:21:51 2011 +0300
+++ b/rhodecode/templates/branches/branches_data.html	Sat Aug 06 23:13:23 2011 +0300
@@ -9,8 +9,7 @@
         </tr>
 		%for cnt,branch in enumerate(c.repo_branches.items()):
 		<tr class="parity${cnt%2}">
-            <td><span class="tooltip" title="${h.age(branch[1].date)}">
-                      ${branch[1].date}</span>
+            <td><span class="tooltip" title="${h.age(branch[1].date)}">${branch[1].date}</span>
             </td>
             <td>
                 <span class="logtags">
@@ -27,8 +26,28 @@
 			</td>
 		</tr>	
 		%endfor
+        % if hasattr(c,'repo_closed_branches') and c.repo_closed_branches:
+          %for cnt,branch in enumerate(c.repo_closed_branches.items()):
+          <tr class="parity${cnt%2}">
+              <td><span class="tooltip" title="${h.age(branch[1].date)}">${branch[1].date}</span>
+              </td>
+              <td>
+                  <span class="logtags">
+                      <span class="branchtag">${h.link_to(branch[0]+' [closed]',
+                      h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))}</span>
+                  </span>         
+              </td>       
+              <td title="${branch[1].author}">${h.person(branch[1].author)}</td>
+              <td>r${branch[1].revision}:${h.short_id(branch[1].raw_id)}</td>
+              <td class="nowrap">
+              ${h.link_to(_('changeset'),h.url('changeset_home',repo_name=c.repo_name,revision=branch[1].raw_id))}
+              |
+              ${h.link_to(_('files'),h.url('files_home',repo_name=c.repo_name,revision=branch[1].raw_id))}
+              </td>
+          </tr>   
+          %endfor
+        %endif  
     </table>
 %else:
-	${_('There are no branches yet')}
-%endif
-
+    ${_('There are no branches yet')}
+%endif
\ No newline at end of file