diff --git a/rhodecode/controllers/admin/repos.py b/rhodecode/controllers/admin/repos.py --- a/rhodecode/controllers/admin/repos.py +++ b/rhodecode/controllers/admin/repos.py @@ -34,6 +34,7 @@ from pylons.controllers.util import redi from pylons.i18n.translation import _ from sqlalchemy.exc import IntegrityError +import rhodecode from rhodecode.lib import helpers as h from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \ HasPermissionAnyDecorator, HasRepoPermissionAllDecorator @@ -45,6 +46,7 @@ from rhodecode.model.db import User, Rep from rhodecode.model.forms import RepoForm from rhodecode.model.scm import ScmModel from rhodecode.model.repo import RepoModel +from rhodecode.lib.compat import json log = logging.getLogger(__name__) @@ -131,9 +133,44 @@ class ReposController(BaseController): """GET /repos: All items in the collection""" # url('repos') - c.repos_list = ScmModel().get_repos(Repository.query() - .order_by(Repository.repo_name) - .all(), sort_key='name_sort') + c.repos_list = Repository.query()\ + .order_by(Repository.repo_name)\ + .all() + + repos_data = [] + total_records = len(c.repos_list) + + _tmpl_lookup = rhodecode.CONFIG['pylons.app_globals'].mako_lookup + template = _tmpl_lookup.get_template('data_table/_dt_elements.html') + + quick_menu = lambda repo_name: (template.get_def("quick_menu") + .render(repo_name, _=_, h=h)) + repo_lnk = lambda name, rtype, private, fork_of: ( + template.get_def("repo_name") + .render(name, rtype, private, fork_of, short_name=False, + admin=True, _=_, h=h)) + + repo_actions = lambda repo_name: (template.get_def("repo_actions") + .render(repo_name, _=_, h=h)) + + for repo in c.repos_list: + repos_data.append({ + "menu": quick_menu(repo.repo_name), + "raw_name": repo.repo_name, + "name": repo_lnk(repo.repo_name, repo.repo_type, repo.private, repo.fork), + "desc": repo.description, + "owner": repo.user.username, + "action": repo_actions(repo.repo_name), + }) + + c.data = json.dumps({ + "totalRecords": total_records, + "startIndex": 0, + "sort": "name", + "dir": "asc", + "records": repos_data + }) + return render('admin/repos/repos.html') @HasPermissionAnyDecorator('hg.admin', 'hg.create.repository')