diff rhodecode/controllers/admin/repos_groups.py @ 1193:523382549c45 beta

Added repo group page showing what reposiories are inside a group
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 01 Apr 2011 18:46:24 +0200
parents 2ab211e0aecd
children 5f2fbab7c429
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos_groups.py	Fri Apr 01 18:08:30 2011 +0200
+++ b/rhodecode/controllers/admin/repos_groups.py	Fri Apr 01 18:46:24 2011 +0200
@@ -1,9 +1,11 @@
 import logging
+from operator import itemgetter
 
 from pylons import request, response, session, tmpl_context as c, url
 from pylons.controllers.util import abort, redirect
 
 from rhodecode.lib.base import BaseController, render
+from rhodecode.model.db import Group
 
 log = logging.getLogger(__name__)
 
@@ -47,6 +49,43 @@
         """GET /repos_groups/id: Show a specific item"""
         # url('repos_group', id=ID)
 
+        c.group = Group.get(id)
+        if c.group:
+            c.group_repos = c.group.repositories
+        else:
+            return redirect(url('repos_group'))
+
+        sortables = ['name', 'description', 'last_change', 'tip', 'owner']
+        current_sort = request.GET.get('sort', 'name')
+        current_sort_slug = current_sort.replace('-', '')
+
+        if current_sort_slug not in sortables:
+            c.sort_by = 'name'
+            current_sort_slug = c.sort_by
+        else:
+            c.sort_by = current_sort
+        c.sort_slug = current_sort_slug
+
+        sort_key = current_sort_slug + '_sort'
+
+
+        #overwrite our cached list with current filter
+        gr_filter = [r.repo_name for r in c.group_repos]
+        c.cached_repo_list = self.scm_model.get_repos(all_repos=gr_filter)
+
+        if c.sort_by.startswith('-'):
+            c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key),
+                                  reverse=True)
+        else:
+            c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key),
+                                  reverse=False)
+
+        c.repo_cnt = len(c.repos_list)
+
+
+        return render('admin/repos_groups/repos_groups.html')
+
+
     def edit(self, id, format='html'):
         """GET /repos_groups/id/edit: Form to edit an existing item"""
         # url('edit_repos_group', id=ID)