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') diff --git a/rhodecode/templates/admin/repos/repos.html b/rhodecode/templates/admin/repos/repos.html --- a/rhodecode/templates/admin/repos/repos.html +++ b/rhodecode/templates/admin/repos/repos.html @@ -5,9 +5,8 @@ ${_('Repositories administration')} - ${c.rhodecode_name} %def> - <%def name="breadcrumbs_links()"> - ${h.link_to(_('Admin'),h.url('admin_home'))} » ${_('Repositories')} + ${h.link_to(_('Admin'),h.url('admin_home'))} » 0 ${_('repositories')} %def> <%def name="page_nav()"> ${self.menu('admin')} @@ -23,102 +22,114 @@ - -
| - | ${_('Name')} | -${_('Description')} | -${_('Last change')} | -${_('Tip')} | -${_('Contact')} | -${_('Action')} | -
|---|---|---|---|---|---|---|
| - ${dt.quick_menu(repo['name'])} - | -- ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],repo['dbrepo_fork'].get('repo_name'), admin=True)} - | - ##DESCRIPTION -- ${h.truncate(repo['description'],60)} - | - ##LAST CHANGE -- ${h.age(repo['last_change'])} - | - ##LAST REVISION -- ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])} - | -${h.person(repo['contact'])} | -- ${h.form(url('repo', repo_name=repo['name']),method='delete')} - ${h.submit('remove_%s' % repo['name'],_('delete'),class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository: %s') % repo['name']+"');")} - ${h.end_form()} - | -