Mercurial > kallithea
changeset 3246:b9ba0d4d3abf beta
implemented #83 show repo size on summary page
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Mon, 28 Jan 2013 23:33:19 +0100 |
parents | 8f3cc21d83e6 |
children | ed2fa8b1ccca |
files | rhodecode/config/routing.py rhodecode/controllers/summary.py rhodecode/model/db.py rhodecode/public/css/style.css rhodecode/public/js/rhodecode.js rhodecode/templates/base/root.html rhodecode/templates/summary/summary.html |
diffstat | 7 files changed, 63 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/config/routing.py Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/config/routing.py Mon Jan 28 23:33:19 2013 +0100 @@ -422,6 +422,10 @@ controller='summary', conditions=dict(function=check_repo)) + rmap.connect('repo_size', '/{repo_name:.*?}/repo_size', + controller='summary', action='repo_size', + conditions=dict(function=check_repo)) + rmap.connect('repos_group_home', '/{group_name:.*}', controller='admin/repos_groups', action="show_by_name", conditions=dict(function=check_group))
--- a/rhodecode/controllers/summary.py Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/controllers/summary.py Mon Jan 28 23:33:19 2013 +0100 @@ -30,20 +30,22 @@ from time import mktime from datetime import timedelta, date from urlparse import urlparse -from rhodecode.lib.compat import product - -from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \ - NodeDoesNotExistError from pylons import tmpl_context as c, request, url, config from pylons.i18n.translation import _ +from webob.exc import HTTPBadRequest from beaker.cache import cache_region, region_invalidate +from rhodecode.lib.compat import product +from rhodecode.lib.vcs.exceptions import ChangesetError, EmptyRepositoryError, \ + NodeDoesNotExistError from rhodecode.config.conf import ALL_READMES, ALL_EXTS, LANGUAGES_EXTENSIONS_MAP from rhodecode.model.db import Statistics, CacheInvalidation +from rhodecode.lib.utils import jsonify from rhodecode.lib.utils2 import safe_unicode -from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator +from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\ + NotAnonymous from rhodecode.lib.base import BaseRepoController, render from rhodecode.lib.vcs.backends.base import EmptyChangeset from rhodecode.lib.markup_renderer import MarkupRenderer @@ -186,6 +188,14 @@ self.__get_readme_data(c.rhodecode_db_repo) return render('summary/summary.html') + @NotAnonymous() + @jsonify + def repo_size(self, repo_name): + if request.is_xhr: + return _('repository size: %s') % c.rhodecode_db_repo._repo_size() + else: + raise HTTPBadRequest() + def __get_readme_data(self, db_repo): repo_name = db_repo.repo_name
--- a/rhodecode/model/db.py Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/model/db.py Mon Jan 28 23:33:19 2013 +0100 @@ -1076,6 +1076,11 @@ pr_id, pr_repo] return grouped + def _repo_size(self): + from rhodecode.lib import helpers as h + log.debug('calculating repository size...') + return h.format_byte_size(self.scm_instance.size) + #========================================================================== # SCM CACHE INSTANCE #==========================================================================
--- a/rhodecode/public/css/style.css Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/public/css/style.css Mon Jan 28 23:33:19 2013 +0100 @@ -3202,6 +3202,23 @@ margin-top: 2px; } +.reposize { + background: url("../images/icons/server.png") no-repeat scroll 3px; + height: 16px; + width: 20px; + cursor: pointer; + display: block; + float: right; + margin-top: 2px; +} + +#repo_size{ + display: block; + margin-top: 4px; + color: #666; + float:right; +} + .locking_locked{ background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px; height: 16px;
--- a/rhodecode/public/js/rhodecode.js Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/public/js/rhodecode.js Mon Jan 28 23:33:19 2013 +0100 @@ -391,6 +391,19 @@ return false; } +var showRepoSize = function(target, repo_name, token){ + var args= 'auth_token='+token; + + // start loading + YUD.get(target).innerHTML = _TM['loading...']; + var url = REPO_SIZE_URL.replace('__NAME__', repo_name); + YUC.asyncRequest('POST',url,{ + success:function(o){ + YUD.get(target).innerHTML = JSON.parse(o.responseText); + } + },args); + return false; +} /** * TOOLTIP IMPL.
--- a/rhodecode/templates/base/root.html Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/templates/base/root.html Mon Jan 28 23:33:19 2013 +0100 @@ -54,7 +54,9 @@ }; var _TM = TRANSLATION_MAP; var TOGGLE_FOLLOW_URL = "${h.url('toggle_following')}"; - var LAZY_CS_URL = "${h.url('changeset_info', repo_name='__NAME__', revision='__REV__')}" + var LAZY_CS_URL = "${h.url('changeset_info', repo_name='__NAME__', revision='__REV__')}"; + var REPO_SIZE_URL = "${h.url('repo_size', repo_name='__NAME__')}"; + </script> <script type="text/javascript" src="${h.url('/js/yui.2.9.js', ver=c.rhodecode_version)}"></script> <!--[if lt IE 9]>
--- a/rhodecode/templates/summary/summary.html Mon Jan 28 21:14:46 2013 +0100 +++ b/rhodecode/templates/summary/summary.html Mon Jan 28 23:33:19 2013 +0100 @@ -62,6 +62,12 @@ onclick="javascript:toggleFollowingRepo(this,${c.dbrepo.repo_id},'${str(h.get_token())}')"> </span> %endif + <div style="float:right;padding:0px 0px 0px 0px"> + <span class="reposize tooltip" title="${_('Click to show size of repository')}" + onclick="javascript:showRepoSize('repo_size','${c.dbrepo.repo_name}','${str(h.get_token())}')"> + </span> + <span id="repo_size"></span> + </div> %endif: ## locking icon