##// END OF EJS Templates
goto-switcher: optimized performance and query capabilities....
goto-switcher: optimized performance and query capabilities. - Previous implementation had on significant bug. The use of LIMIT 20 was limiting results BEFORE auth checks. In case of large ammount of similarly named repositories user didn't had access too, the result goto search was empty. This was becuase first 20 items fetched didn't pass permission checks and final auth list was empty. To fix this we now use proper filtering for auth using SQL. It means we first check user allowed repositories, and add this as a filter so end result from database is already to only the accessible repositories.

File last commit:

r1990:32399c6a default
r2038:2bdf9d4d default
Show More
list.mako
253 lines | 9.5 KiB | application/x-mako | MakoHtmlLexer
templating: use .mako as extensions for template files.
r1282 ## -*- coding: utf-8 -*-
<%inherit file="base.mako"/>
<%def name="breadcrumbs_links()">
%if c.repo:
repo-settings: converted repo settings to pyramid...
r1716 ${h.link_to('Settings',h.route_path('edit_repo', repo_name=c.repo.repo_name))}
templating: use .mako as extensions for template files.
r1282 %elif c.repo_group:
audit-logs: introduced new view to replace admin journal....
r1758 ${h.link_to(_('Admin'),h.route_path('admin_home'))}
templating: use .mako as extensions for template files.
r1282 &raquo;
${h.link_to(_('Repository Groups'),h.url('repo_groups'))}
&raquo;
${h.link_to(c.repo_group.group_name,h.url('edit_repo_group', group_name=c.repo_group.group_name))}
%else:
audit-logs: introduced new view to replace admin journal....
r1758 ${h.link_to(_('Admin'),h.route_path('admin_home'))}
templating: use .mako as extensions for template files.
r1282 &raquo;
${h.link_to(_('Settings'),h.url('admin_settings'))}
%endif
integrations: rewrote usage of pylons components inside integrations....
r1990 %if c.current_IntegrationType:
templating: use .mako as extensions for template files.
r1282 &raquo;
%if c.repo:
${h.link_to(_('Integrations'),
integrations: rewrote usage of pylons components inside integrations....
r1990 request.route_path(route_name='repo_integrations_home',
repo_name=c.repo.repo_name))}
templating: use .mako as extensions for template files.
r1282 %elif c.repo_group:
${h.link_to(_('Integrations'),
integrations: rewrote usage of pylons components inside integrations....
r1990 request.route_path(route_name='repo_group_integrations_home',
repo_group_name=c.repo_group.group_name))}
templating: use .mako as extensions for template files.
r1282 %else:
${h.link_to(_('Integrations'),
integrations: rewrote usage of pylons components inside integrations....
r1990 request.route_path(route_name='global_integrations_home'))}
templating: use .mako as extensions for template files.
r1282 %endif
&raquo;
integrations: rewrote usage of pylons components inside integrations....
r1990 ${c.current_IntegrationType.display_name}
templating: use .mako as extensions for template files.
r1282 %else:
&raquo;
${_('Integrations')}
%endif
</%def>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
%if c.repo:
${_('Current Integrations for Repository: {repo_name}').format(repo_name=c.repo.repo_name)}
%elif c.repo_group:
${_('Current Integrations for repository group: {repo_group_name}').format(repo_group_name=c.repo_group.group_name)}
%else:
${_('Current Integrations')}
%endif
</h3>
</div>
<div class="panel-body">
<%
if c.repo:
home_url = request.route_path('repo_integrations_home',
repo_name=c.repo.repo_name)
elif c.repo_group:
home_url = request.route_path('repo_group_integrations_home',
repo_group_name=c.repo_group.group_name)
else:
home_url = request.route_path('global_integrations_home')
%>
integrations: rewrote usage of pylons components inside integrations....
r1990 <a href="${home_url}" class="btn ${not c.current_IntegrationType and 'btn-primary' or ''}">${_('All')}</a>
templating: use .mako as extensions for template files.
r1282
integrations: rewrote usage of pylons components inside integrations....
r1990 %for integration_key, IntegrationType in c.available_integrations.items():
templating: use .mako as extensions for template files.
r1282 <%
if c.repo:
list_url = request.route_path('repo_integrations_list',
repo_name=c.repo.repo_name,
integration=integration_key)
elif c.repo_group:
list_url = request.route_path('repo_group_integrations_list',
repo_group_name=c.repo_group.group_name,
integration=integration_key)
else:
list_url = request.route_path('global_integrations_list',
integration=integration_key)
%>
<a href="${list_url}"
integrations: rewrote usage of pylons components inside integrations....
r1990 class="btn ${c.current_IntegrationType and integration_key == c.current_IntegrationType.key and 'btn-primary' or ''}">
templating: use .mako as extensions for template files.
r1282 ${IntegrationType.display_name}
</a>
%endfor
<%
integrations: rewrote usage of pylons components inside integrations....
r1990 integration_type = c.current_IntegrationType and c.current_IntegrationType.display_name or ''
templating: use .mako as extensions for template files.
r1282 if c.repo:
create_url = h.route_path('repo_integrations_new', repo_name=c.repo.repo_name)
elif c.repo_group:
create_url = h.route_path('repo_group_integrations_new', repo_group_name=c.repo_group.group_name)
else:
create_url = h.route_path('global_integrations_new')
%>
<p class="pull-right">
<a href="${create_url}" class="btn btn-small btn-success">${_(u'Create new integration')}</a>
</p>
<table class="rctable integrations">
<thead>
<tr>
integrations: rewrote usage of pylons components inside integrations....
r1990 <th><a href="?sort=enabled:${c.rev_sort_dir}">${_('Enabled')}</a></th>
<th><a href="?sort=name:${c.rev_sort_dir}">${_('Name')}</a></th>
<th colspan="2"><a href="?sort=integration_type:${c.rev_sort_dir}">${_('Type')}</a></th>
<th><a href="?sort=scope:${c.rev_sort_dir}">${_('Scope')}</a></th>
templating: use .mako as extensions for template files.
r1282 <th>${_('Actions')}</th>
<th></th>
</tr>
</thead>
<tbody>
integrations: rewrote usage of pylons components inside integrations....
r1990 %if not c.integrations_list:
templating: use .mako as extensions for template files.
r1282 <tr>
<td colspan="7">
integrations: rewrote usage of pylons components inside integrations....
r1990
templating: use .mako as extensions for template files.
r1282 %if c.repo:
${_('No {type} integrations for repo {repo} exist yet.').format(type=integration_type, repo=c.repo.repo_name)}
%elif c.repo_group:
${_('No {type} integrations for repogroup {repogroup} exist yet.').format(type=integration_type, repogroup=c.repo_group.group_name)}
%else:
${_('No {type} integrations exist yet.').format(type=integration_type)}
%endif
integrations: rewrote usage of pylons components inside integrations....
r1990 %if c.current_IntegrationType:
templating: use .mako as extensions for template files.
r1282 <%
if c.repo:
integrations: rewrote usage of pylons components inside integrations....
r1990 create_url = h.route_path('repo_integrations_create', repo_name=c.repo.repo_name, integration=c.current_IntegrationType.key)
templating: use .mako as extensions for template files.
r1282 elif c.repo_group:
integrations: rewrote usage of pylons components inside integrations....
r1990 create_url = h.route_path('repo_group_integrations_create', repo_group_name=c.repo_group.group_name, integration=c.current_IntegrationType.key)
templating: use .mako as extensions for template files.
r1282 else:
integrations: rewrote usage of pylons components inside integrations....
r1990 create_url = h.route_path('global_integrations_create', integration=c.current_IntegrationType.key)
templating: use .mako as extensions for template files.
r1282 %>
%endif
<a href="${create_url}">${_(u'Create one')}</a>
</td>
</tr>
%endif
integrations: rewrote usage of pylons components inside integrations....
r1990 %for IntegrationType, integration in c.integrations_list:
templating: use .mako as extensions for template files.
r1282 <tr id="integration_${integration.integration_id}">
<td class="td-enabled">
%if integration.enabled:
<div class="flag_status approved pull-left"></div>
%else:
<div class="flag_status rejected pull-left"></div>
%endif
</td>
<td class="td-description">
${integration.name}
</td>
<td class="td-icon">
integrations: rewrote usage of pylons components inside integrations....
r1990 %if integration.integration_type in c.available_integrations:
templating: use .mako as extensions for template files.
r1282 <div class="integration-icon">
integrations: rewrote usage of pylons components inside integrations....
r1990 ${c.available_integrations[integration.integration_type].icon|n}
templating: use .mako as extensions for template files.
r1282 </div>
%else:
?
%endif
</td>
<td class="td-type">
${integration.integration_type}
</td>
<td class="td-scope">
%if integration.repo:
repo-summary: re-implemented summary view as pyramid....
r1785 <a href="${h.route_path('repo_summary', repo_name=integration.repo.repo_name)}">
templating: use .mako as extensions for template files.
r1282 ${_('repo')}:${integration.repo.repo_name}
</a>
%elif integration.repo_group:
home: moved home and repo group views into pyramid....
r1774 <a href="${h.route_path('repo_group_home', repo_group_name=integration.repo_group.group_name)}">
templating: use .mako as extensions for template files.
r1282 ${_('repogroup')}:${integration.repo_group.group_name}
%if integration.child_repos_only:
${_('child repos only')}
%else:
${_('cascade to all')}
%endif
</a>
%else:
%if integration.child_repos_only:
${_('top level repos only')}
%else:
${_('global')}
%endif
</td>
%endif
<td class="td-action">
%if not IntegrationType:
${_('unknown integration')}
%else:
<%
if c.repo:
edit_url = request.route_path('repo_integrations_edit',
repo_name=c.repo.repo_name,
integration=integration.integration_type,
integration_id=integration.integration_id)
elif c.repo_group:
edit_url = request.route_path('repo_group_integrations_edit',
repo_group_name=c.repo_group.group_name,
integration=integration.integration_type,
integration_id=integration.integration_id)
else:
edit_url = request.route_path('global_integrations_edit',
integration=integration.integration_type,
integration_id=integration.integration_id)
%>
<div class="grid_edit">
<a href="${edit_url}">${_('Edit')}</a>
</div>
<div class="grid_delete">
<a href="${edit_url}"
class="btn btn-link btn-danger delete_integration_entry"
data-desc="${integration.name}"
data-uid="${integration.integration_id}">
${_('Delete')}
</a>
</div>
%endif
</td>
</tr>
%endfor
<tr id="last-row"></tr>
</tbody>
</table>
<div class="integrations-paginator">
<div class="pagination-wh pagination-left">
integrations: rewrote usage of pylons components inside integrations....
r1990 ${c.integrations_list.pager('$link_previous ~2~ $link_next')}
templating: use .mako as extensions for template files.
r1282 </div>
</div>
</div>
</div>
<script type="text/javascript">
var delete_integration = function(entry) {
if (confirm("Confirm to remove this integration: "+$(entry).data('desc'))) {
var request = $.ajax({
type: "POST",
url: $(entry).attr('href'),
data: {
'delete': 'delete',
'csrf_token': CSRF_TOKEN
},
success: function(){
location.reload();
},
error: function(data, textStatus, errorThrown){
alert("Error while deleting entry.\nError code {0} ({1}). URL: {2}".format(data.status,data.statusText,$(entry)[0].url));
}
});
};
html: fixed found syntax problems
r1283 };
templating: use .mako as extensions for template files.
r1282
$('.delete_integration_entry').on('click', function(e){
e.preventDefault();
delete_integration(this);
});
</script>