@@ -422,6 +422,10 @@ def make_map(config):
controller='summary',
conditions=dict(function=check_repo))
rmap.connect('repo_size', '/{repo_name:.*?}/repo_size',
controller='summary', action='repo_size',
rmap.connect('repos_group_home', '/{group_name:.*}',
controller='admin/repos_groups', action="show_by_name",
conditions=dict(function=check_group))
@@ -30,20 +30,22 @@ import urllib
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.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 @@ class SummaryController(BaseRepoControll
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
@@ -1076,6 +1076,11 @@ class Repository(Base, BaseModel):
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
@@ -3202,6 +3202,23 @@ table.code-browser .submodule-dir {
margin-top: 2px;
}
.reposize {
background: url("../images/icons/server.png") no-repeat scroll 3px;
height: 16px;
width: 20px;
cursor: pointer;
display: block;
float: right;
#repo_size{
margin-top: 4px;
color: #666;
float:right;
.locking_locked{
background: #FFF url("../images/icons/block_16.png") no-repeat scroll 3px;
@@ -391,6 +391,19 @@ var toggleFollowingRepo = function(targe
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);
/**
* TOOLTIP IMPL.
@@ -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]>
@@ -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 id="repo_size"></span>
</div>
%endif:
## locking icon
Status change: