Add support for Find Roles by Permission X feature
This commit is contained in:
parent
dd5162c151
commit
cab339e367
8 changed files with 221 additions and 134 deletions
67
tailbone/templates/principal/find_by_perm.mako
Normal file
67
tailbone/templates/principal/find_by_perm.mako
Normal file
|
@ -0,0 +1,67 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="/base.mako" />
|
||||
|
||||
<%def name="title()">Find ${model_title_plural} by Permission</%def>
|
||||
|
||||
<%def name="extra_javascript()">
|
||||
${parent.extra_javascript()}
|
||||
<script type="text/javascript">
|
||||
|
||||
<% gcount = len(permissions) %>
|
||||
var permissions_by_group = {
|
||||
% for g, (gkey, group) in enumerate(permissions, 1):
|
||||
<% pcount = len(group['perms']) %>
|
||||
'${gkey}': {
|
||||
% for p, (pkey, perm) in enumerate(group['perms'], 1):
|
||||
'${pkey}': "${perm['label']}"${',' if p < pcount else ''}
|
||||
% endfor
|
||||
}${',' if g < gcount else ''}
|
||||
% endfor
|
||||
};
|
||||
|
||||
$(function() {
|
||||
|
||||
$('#permission_group').selectmenu({
|
||||
change: function(event, ui) {
|
||||
var perms = $('#permission');
|
||||
perms.find('option:first').siblings('option').remove();
|
||||
$.each(permissions_by_group[ui.item.value], function(key, label) {
|
||||
perms.append($('<option value="' + key + '">' + label + '</option>'));
|
||||
});
|
||||
perms.selectmenu('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
$('#permission').selectmenu();
|
||||
|
||||
$('#find-by-perm-form').submit(function() {
|
||||
$('.newgrid').remove();
|
||||
$(this).find('#submit').button('disable').button('option', 'label', "Searching, please wait...");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</%def>
|
||||
|
||||
|
||||
${h.form(request.current_route_url(), id='find-by-perm-form')}
|
||||
${h.csrf_token(request)}
|
||||
|
||||
<div class="form">
|
||||
${self.wtfield(form, 'permission_group')}
|
||||
${self.wtfield(form, 'permission')}
|
||||
<div class="buttons">
|
||||
${h.submit('submit', "Find {}".format(model_title_plural))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
${h.end_form()}
|
||||
|
||||
% if principals is not None:
|
||||
<div class="newgrid half">
|
||||
<br />
|
||||
<h2>${model_title_plural} with that permission (${len(principals)} total):</h2>
|
||||
${self.principal_table()}
|
||||
</div>
|
||||
% endif
|
11
tailbone/templates/principal/index.mako
Normal file
11
tailbone/templates/principal/index.mako
Normal file
|
@ -0,0 +1,11 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="/master/index.mako" />
|
||||
|
||||
<%def name="context_menu_items()">
|
||||
${parent.context_menu_items()}
|
||||
% if request.has_perm('{}.find_by_perm'.format(permission_prefix)):
|
||||
<li>${h.link_to("Find {} with Permission X".format(model_title_plural), url('{}.find_by_perm'.format(route_prefix)))}</li>
|
||||
% endif
|
||||
</%def>
|
||||
|
||||
${parent.body()}
|
21
tailbone/templates/roles/find_by_perm.mako
Normal file
21
tailbone/templates/roles/find_by_perm.mako
Normal file
|
@ -0,0 +1,21 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="/principal/find_by_perm.mako" />
|
||||
|
||||
<%def name="principal_table()">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
% for role in principals:
|
||||
<tr>
|
||||
<td>${h.link_to(role.name, url('roles.view', uuid=role.uuid))}</td>
|
||||
</tr>
|
||||
% endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</%def>
|
||||
|
||||
${parent.body()}
|
|
@ -1,66 +1,7 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="/base.mako" />
|
||||
<%inherit file="/principal/find_by_perm.mako" />
|
||||
|
||||
<%def name="title()">Find Users by Permission</%def>
|
||||
|
||||
<%def name="extra_javascript()">
|
||||
${parent.extra_javascript()}
|
||||
<script type="text/javascript">
|
||||
|
||||
<% gcount = len(permissions) %>
|
||||
var permissions_by_group = {
|
||||
% for g, (gkey, group) in enumerate(permissions, 1):
|
||||
<% pcount = len(group['perms']) %>
|
||||
'${gkey}': {
|
||||
% for p, (pkey, perm) in enumerate(group['perms'], 1):
|
||||
'${pkey}': "${perm['label']}"${',' if p < pcount else ''}
|
||||
% endfor
|
||||
}${',' if g < gcount else ''}
|
||||
% endfor
|
||||
};
|
||||
|
||||
$(function() {
|
||||
|
||||
$('#permission_group').selectmenu({
|
||||
change: function(event, ui) {
|
||||
var perms = $('#permission');
|
||||
perms.find('option:first').siblings('option').remove();
|
||||
$.each(permissions_by_group[ui.item.value], function(key, label) {
|
||||
perms.append($('<option value="' + key + '">' + label + '</option>'));
|
||||
});
|
||||
perms.selectmenu('refresh');
|
||||
}
|
||||
});
|
||||
|
||||
$('#permission').selectmenu();
|
||||
|
||||
$('#find-by-perm-form').submit(function() {
|
||||
$('.newgrid').remove();
|
||||
$(this).find('#submit').button('disable').button('option', 'label', "Searching, please wait...");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</%def>
|
||||
|
||||
${h.form(request.current_route_url(), id='find-by-perm-form')}
|
||||
${h.csrf_token(request)}
|
||||
|
||||
<div class="form">
|
||||
${self.wtfield(form, 'permission_group')}
|
||||
${self.wtfield(form, 'permission')}
|
||||
<div class="buttons">
|
||||
${h.submit('submit', "Find Users")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
${h.end_form()}
|
||||
|
||||
% if users is not None:
|
||||
<div class="newgrid half">
|
||||
<br />
|
||||
<h2>Users with that permission (${len(users)} total):</h2>
|
||||
<%def name="principal_table()">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -69,7 +10,7 @@ ${h.end_form()}
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
% for user in users:
|
||||
% for user in principals:
|
||||
<tr>
|
||||
<td>${h.link_to(user.username, url('users.view', uuid=user.uuid))}</td>
|
||||
<td>${user.person or ''}</td>
|
||||
|
@ -77,5 +18,6 @@ ${h.end_form()}
|
|||
% endfor
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
% endif
|
||||
</%def>
|
||||
|
||||
${parent.body()}
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
## -*- coding: utf-8 -*-
|
||||
<%inherit file="/master/index.mako" />
|
||||
|
||||
<%def name="context_menu_items()">
|
||||
${parent.context_menu_items()}
|
||||
% if request.has_perm('users.find_by_perm'):
|
||||
<li>${h.link_to("Find Users with Permission X", url('users.find_by_perm'))}</li>
|
||||
% endif
|
||||
</%def>
|
||||
|
||||
${parent.body()}
|
Loading…
Add table
Add a link
Reference in a new issue