comparison 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
comparison
equal deleted inserted replaced
1192:01fe71db71f6 1193:523382549c45
1 import logging 1 import logging
2 from operator import itemgetter
2 3
3 from pylons import request, response, session, tmpl_context as c, url 4 from pylons import request, response, session, tmpl_context as c, url
4 from pylons.controllers.util import abort, redirect 5 from pylons.controllers.util import abort, redirect
5 6
6 from rhodecode.lib.base import BaseController, render 7 from rhodecode.lib.base import BaseController, render
8 from rhodecode.model.db import Group
7 9
8 log = logging.getLogger(__name__) 10 log = logging.getLogger(__name__)
9 11
10 class ReposGroupsController(BaseController): 12 class ReposGroupsController(BaseController):
11 """REST Controller styled on the Atom Publishing Protocol""" 13 """REST Controller styled on the Atom Publishing Protocol"""
45 47
46 def show(self, id, format='html'): 48 def show(self, id, format='html'):
47 """GET /repos_groups/id: Show a specific item""" 49 """GET /repos_groups/id: Show a specific item"""
48 # url('repos_group', id=ID) 50 # url('repos_group', id=ID)
49 51
52 c.group = Group.get(id)
53 if c.group:
54 c.group_repos = c.group.repositories
55 else:
56 return redirect(url('repos_group'))
57
58 sortables = ['name', 'description', 'last_change', 'tip', 'owner']
59 current_sort = request.GET.get('sort', 'name')
60 current_sort_slug = current_sort.replace('-', '')
61
62 if current_sort_slug not in sortables:
63 c.sort_by = 'name'
64 current_sort_slug = c.sort_by
65 else:
66 c.sort_by = current_sort
67 c.sort_slug = current_sort_slug
68
69 sort_key = current_sort_slug + '_sort'
70
71
72 #overwrite our cached list with current filter
73 gr_filter = [r.repo_name for r in c.group_repos]
74 c.cached_repo_list = self.scm_model.get_repos(all_repos=gr_filter)
75
76 if c.sort_by.startswith('-'):
77 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key),
78 reverse=True)
79 else:
80 c.repos_list = sorted(c.cached_repo_list, key=itemgetter(sort_key),
81 reverse=False)
82
83 c.repo_cnt = len(c.repos_list)
84
85
86 return render('admin/repos_groups/repos_groups.html')
87
88
50 def edit(self, id, format='html'): 89 def edit(self, id, format='html'):
51 """GET /repos_groups/id/edit: Form to edit an existing item""" 90 """GET /repos_groups/id/edit: Form to edit an existing item"""
52 # url('edit_repos_group', id=ID) 91 # url('edit_repos_group', id=ID)