##// END OF EJS Templates
Don't cache dulwich Repos, in pararell multithreaded evniroment dulwich pack file openers...
Don't cache dulwich Repos, in pararell multithreaded evniroment dulwich pack file openers can break badly. We need to create Repo() objects always for each call, even when it's taken from cache. Fixed issue with dulwich filedescriptor leak ref #573

File last commit:

r2951:301773d0 beta
r3043:b61824e6 beta
Show More
user_edit_my_account.html
245 lines | 7.4 KiB | text/html | HtmlLexer
## -*- coding: utf-8 -*-
<%inherit file="/base/base.html"/>
<%def name="title()">
${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name}
</%def>
<%def name="breadcrumbs_links()">
${_('My Account')}
</%def>
<%def name="page_nav()">
${self.menu('admin')}
</%def>
<%def name="main()">
<div class="box box-left">
<!-- box / title -->
<div class="title">
${self.breadcrumbs()}
</div>
<!-- end box / title -->
${c.form|n}
</div>
<div class="box box-right">
<!-- box / title -->
<div class="title">
<h5>
<input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}" style="display: none"/>
</h5>
<ul class="links" style="color:#DADADA">
<li>
<span><a id="show_perms" class="link-white current" href="#perms">${_('My permissions')}</a> </span>
</li>
<li>
<span><a id="show_my" class="link-white" href="#my">${_('My repos')}</a> </span>
</li>
<li>
<span><a id="show_pullrequests" class="link-white" href="#pullrequests">${_('My pull requests')}</a> </span>
</li>
%if h.HasPermissionAny('hg.admin','hg.create.repository')():
<li>
<span>${h.link_to(_('Add repo'),h.url('admin_settings_create_repository'))}</span>
</li>
%endif
</ul>
</div>
<!-- end box / title -->
<div id="perms" class="table">
%for section in sorted(c.rhodecode_user.permissions.keys()):
<div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
<div id='tbl_list_wrap_${section}' class="yui-skin-sam">
<table id="tbl_list_${section}">
<thead>
<tr>
<th class="left">${_('Name')}</th>
<th class="left">${_('Permission')}</th>
</thead>
<tbody>
%for k in c.rhodecode_user.permissions[section]:
<%
if section != 'global':
section_perm = c.rhodecode_user.permissions[section].get(k)
_perm = section_perm.split('.')[-1]
else:
_perm = section_perm = None
%>
%if _perm not in ['none']:
<tr>
<td>
%if section == 'repositories':
<a href="${h.url('summary_home',repo_name=k)}">${k}</a>
%elif section == 'repositories_groups':
<a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
%else:
${k}
%endif
</td>
<td>
%if section == 'global':
${h.bool2icon(True)}
%else:
<span class="perm_tag ${_perm}">${section_perm}</span>
%endif
</td>
</tr>
%endif
%endfor
</tbody>
</table>
</div>
%endfor
</div>
<div id="my" class="table" style="display:none">
</div>
<div id="pullrequests" class="table" style="display:none"></div>
</div>
<script type="text/javascript">
var filter_activate = function(){
var nodes = YUQ('#my tr td a.repo_name');
var func = function(node){
return node.parentNode.parentNode.parentNode.parentNode;
}
q_filter('q_filter',YUQ('#my tr td a.repo_name'),func);
}
var show_perms = function(e){
YUD.addClass('show_perms', 'current');
YUD.removeClass('show_my','current');
YUD.removeClass('show_pullrequests','current');
YUD.setStyle('my','display','none');
YUD.setStyle('pullrequests','display','none');
YUD.setStyle('perms','display','');
YUD.setStyle('q_filter','display','none');
}
YUE.on('show_perms','click',function(e){
show_perms();
})
var show_my = function(e){
YUD.addClass('show_my', 'current');
YUD.removeClass('show_perms','current');
YUD.removeClass('show_pullrequests','current');
YUD.setStyle('perms','display','none');
YUD.setStyle('pullrequests','display','none');
YUD.setStyle('my','display','');
YUD.setStyle('q_filter','display','');
var url = "${h.url('journal_my_repos')}";
ypjax(url, 'my', function(){
table_sort();
filter_activate();
});
}
YUE.on('show_my','click',function(e){
show_my(e);
})
var show_pullrequests = function(e){
YUD.addClass('show_pullrequests', 'current');
YUD.removeClass('show_my','current');
YUD.removeClass('show_perms','current');
YUD.setStyle('my','display','none');
YUD.setStyle('perms','display','none');
YUD.setStyle('pullrequests','display','');
YUD.setStyle('q_filter','display','none');
var url = "${h.url('admin_settings_my_pullrequests')}";
ypjax(url, 'pullrequests');
}
YUE.on('show_pullrequests','click',function(e){
show_pullrequests(e)
})
var tabs = {
'perms': show_perms,
'my': show_my,
'pullrequests': show_pullrequests
}
var url = location.href.split('#');
if (url[1]) {
//We have a hash
var tabHash = url[1];
tabs[tabHash]();
}
// main table sorting
var myColumnDefs = [
{key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
{key:"name",label:"${_('Name')}",sortable:true,
sortOptions: { sortFunction: nameSort }},
{key:"tip",label:"${_('Tip')}",sortable:true,
sortOptions: { sortFunction: revisionSort }},
{key:"action1",label:"",sortable:false},
{key:"action2",label:"",sortable:false},
];
function table_sort(){
var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
myDataSource.responseSchema = {
fields: [
{key:"menu"},
{key:"name"},
{key:"tip"},
{key:"action1"},
{key:"action2"},
]
};
var trans_defs = {
sortedBy:{key:"name",dir:"asc"},
MSG_SORTASC:"${_('Click to sort ascending')}",
MSG_SORTDESC:"${_('Click to sort descending')}",
MSG_EMPTY:"${_('No records found.')}",
MSG_ERROR:"${_('Data error.')}",
MSG_LOADING:"${_('Loading...')}",
}
var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,trans_defs);
myDataTable.subscribe('postRenderEvent',function(oArgs) {
tooltip_activate();
quick_repo_menu();
filter_activate();
});
var permsColumnDefs = [
{key:"name",label:"${_('Name')}",sortable:true, sortOptions: { sortFunction: permNameSort }},
{key:"perm",label:"${_('Permission')}",sortable:false,},
];
// perms repos table
var myDataSource2 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories"));
myDataSource2.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
myDataSource2.responseSchema = {
fields: [
{key:"name"},
{key:"perm"},
]
};
new YAHOO.widget.DataTable("tbl_list_wrap_repositories", permsColumnDefs, myDataSource2, trans_defs);
//perms groups table
var myDataSource3 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories_groups"));
myDataSource3.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
myDataSource3.responseSchema = {
fields: [
{key:"name"},
{key:"perm"},
]
};
new YAHOO.widget.DataTable("tbl_list_wrap_repositories_groups", permsColumnDefs, myDataSource3, trans_defs);
}
</script>
</%def>