mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Can now optionally create a new group with the same name as a role when creating the role, along with more cleanup on the various users / groups / roles templates.
This commit is contained in:
@@ -60,6 +60,7 @@ class Admin( BaseController ):
|
||||
description = util.restore_text( params.description )
|
||||
in_users = util.listify( params.get( 'in_users', [] ) )
|
||||
in_groups = util.listify( params.get( 'in_groups', [] ) )
|
||||
create_group_for_role = params.get( 'create_group_for_role', 'no' )
|
||||
if not name or not description:
|
||||
msg = "Enter a valid name and a description"
|
||||
elif trans.app.model.Role.filter( trans.app.model.Role.table.c.name==name ).first():
|
||||
@@ -76,7 +77,14 @@ class Admin( BaseController ):
|
||||
for group in [ trans.app.model.Group.get( x ) for x in in_groups ]:
|
||||
gra = trans.app.model.GroupRoleAssociation( group, role )
|
||||
gra.flush()
|
||||
msg = "Role '%s' has been created with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
|
||||
if create_group_for_role == 'yes':
|
||||
# Create the group
|
||||
group = trans.app.model.Group( name=name )
|
||||
group.flush()
|
||||
msg = "Group '%s' has been created, and role '%s' has been created with %d associated users and %d associated groups" % \
|
||||
( group.name, role.name, len( in_users ), len( in_groups ) )
|
||||
else:
|
||||
msg = "Role '%s' has been created with %d associated users and %d associated groups" % ( role.name, len( in_users ), len( in_groups ) )
|
||||
trans.response.send_redirect( web.url_for( controller='admin', action='roles', msg=util.sanitize_text( msg ), messagetype='done' ) )
|
||||
trans.response.send_redirect( web.url_for( controller='admin', action='create_role', msg=util.sanitize_text( msg ), messagetype='error' ) )
|
||||
out_users = []
|
||||
@@ -201,23 +209,12 @@ class Admin( BaseController ):
|
||||
params = util.Params( kwd )
|
||||
msg = util.restore_text( params.get( 'msg', '' ) )
|
||||
messagetype = params.get( 'messagetype', 'done' )
|
||||
# Build a list of tuples which are roles followed by lists of groups and users
|
||||
# [ ( role, [ group, group, group ], [ user, user ] ), ( role, [ group, group ], [ user ] ) ]
|
||||
roles_groups_users = []
|
||||
roles = trans.app.model.Role.query() \
|
||||
.filter( trans.app.model.Role.table.c.deleted==True ) \
|
||||
.order_by( trans.app.model.Role.table.c.name ) \
|
||||
.all()
|
||||
for role in roles:
|
||||
groups = []
|
||||
for gra in role.groups:
|
||||
groups.append( trans.app.model.Group.get( gra.group_id ) )
|
||||
users = []
|
||||
for ura in role.users:
|
||||
users.append( trans.app.model.User.get( ura.user_id ) )
|
||||
roles_groups_users.append( ( role, groups, users ) )
|
||||
return trans.fill_template( '/admin/dataset_security/deleted_roles.mako',
|
||||
roles_groups_users=roles_groups_users,
|
||||
roles=roles,
|
||||
msg=msg,
|
||||
messagetype=messagetype )
|
||||
@web.expose
|
||||
@@ -398,23 +395,12 @@ class Admin( BaseController ):
|
||||
params = util.Params( kwd )
|
||||
msg = util.restore_text( params.get( 'msg', '' ) )
|
||||
messagetype = params.get( 'messagetype', 'done' )
|
||||
# Build a list of tuples which are groups followed by lists of members and roles
|
||||
# [ ( group, [ member, member, member ], [ role, role ] ), ( group, [ member, member ], [ role ] ) ]
|
||||
groups_members_roles = []
|
||||
groups = trans.app.model.Group.query() \
|
||||
.filter( trans.app.model.Group.table.c.deleted==True ) \
|
||||
.order_by( trans.app.model.Group.table.c.name ) \
|
||||
.all()
|
||||
for group in groups:
|
||||
members = []
|
||||
for uga in group.members:
|
||||
members.append( trans.app.model.User.get( uga.user_id ) )
|
||||
roles = []
|
||||
for gra in group.roles:
|
||||
roles.append( trans.app.model.Role.get( gra.role_id ) )
|
||||
groups_members_roles.append( ( group, members, roles ) )
|
||||
return trans.fill_template( '/admin/dataset_security/deleted_groups.mako',
|
||||
groups_members_roles=groups_members_roles,
|
||||
groups=groups,
|
||||
msg=msg,
|
||||
messagetype=messagetype )
|
||||
@web.expose
|
||||
@@ -627,8 +613,8 @@ class Admin( BaseController ):
|
||||
msg = util.restore_text( params.get( 'msg', '' ) )
|
||||
messagetype = params.get( 'messagetype', 'done' )
|
||||
users = trans.app.model.User.filter( and_( trans.app.model.User.table.c.deleted==True, trans.app.model.User.table.c.purged==False ) ) \
|
||||
.order_by( trans.app.model.User.table.c.email ) \
|
||||
.all()
|
||||
.order_by( trans.app.model.User.table.c.email ) \
|
||||
.all()
|
||||
return trans.fill_template( '/admin/user/deleted_users.mako', users=users, msg=msg, messagetype=messagetype )
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<%namespace file="/message.mako" import="render_msg" />
|
||||
|
||||
## Render a row
|
||||
<%def name="render_row( group, members, roles, ctr, anchored, curr_anchor )">
|
||||
<%def name="render_row( group, ctr, anchored, curr_anchor )">
|
||||
%if ctr % 2 == 1:
|
||||
<tr class="odd_row">
|
||||
%else:
|
||||
@@ -17,18 +17,10 @@
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
%for user in members:
|
||||
<li>${user.email}</li>
|
||||
%endfor
|
||||
</ul>
|
||||
${len( group.members )}
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
%for role in roles:
|
||||
<li>${role.name}</li>
|
||||
%endfor
|
||||
</ul>
|
||||
${len( group.roles )}
|
||||
%if not anchored:
|
||||
<a name="${curr_anchor}"></a>
|
||||
<div style="float: right;"><a href="#TOP">top</a></div>
|
||||
@@ -43,12 +35,12 @@
|
||||
${render_msg( msg, messagetype )}
|
||||
%endif
|
||||
|
||||
%if len( groups_members_roles ) == 0:
|
||||
%if len( groups ) == 0:
|
||||
There are no deleted Galaxy groups
|
||||
%else:
|
||||
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<%
|
||||
render_quick_find = len( groups_members_roles ) > 50
|
||||
render_quick_find = len( groups ) > 50
|
||||
ctr = 0
|
||||
%>
|
||||
%if render_quick_find:
|
||||
@@ -69,34 +61,29 @@
|
||||
%endif
|
||||
<tr class="header">
|
||||
<td>Name</td>
|
||||
<td>Members</td>
|
||||
<td>Users</td>
|
||||
<td>Roles</td>
|
||||
</tr>
|
||||
%for ctr, group_tuple in enumerate( groups_members_roles ):
|
||||
<%
|
||||
group = group_tuple[0]
|
||||
members = group_tuple[1]
|
||||
roles = group_tuple[2]
|
||||
%>
|
||||
%for ctr, group in enumerate( groups ):
|
||||
%if render_quick_find and not group.name.upper().startswith( curr_anchor ):
|
||||
<% anchored = False %>
|
||||
%endif
|
||||
%if render_quick_find and group.name.upper().startswith( curr_anchor ):
|
||||
%if not anchored:
|
||||
${render_row( group, members, roles, ctr, anchored, curr_anchor )}
|
||||
${render_row( group, ctr, anchored, curr_anchor )}
|
||||
<% anchored = True %>
|
||||
%else:
|
||||
${render_row( group, members, roles, ctr, anchored, curr_anchor )}
|
||||
${render_row( group, ctr, anchored, curr_anchor )}
|
||||
%endif
|
||||
%elif render_quick_find:
|
||||
%for anchor in anchors[ anchor_loc: ]:
|
||||
%if group.name.upper().startswith( anchor ):
|
||||
%if not anchored:
|
||||
<% curr_anchor = anchor %>
|
||||
${render_row( group, members, roles, ctr, anchored, curr_anchor )}
|
||||
${render_row( group, ctr, anchored, curr_anchor )}
|
||||
<% anchored = True %>
|
||||
%else:
|
||||
${render_row( group, members, roles, ctr, anchored, curr_anchor )}
|
||||
${render_row( group, ctr, anchored, curr_anchor )}
|
||||
%endif
|
||||
<%
|
||||
anchor_loc = anchors.index( anchor )
|
||||
@@ -105,7 +92,7 @@
|
||||
%endif
|
||||
%endfor
|
||||
%else:
|
||||
${render_row( group, members, roles, ctr, True, '' )}
|
||||
${render_row( group, ctr, True, '' )}
|
||||
%endif
|
||||
%endfor
|
||||
</table>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<%namespace file="/message.mako" import="render_msg" />
|
||||
|
||||
## Render a row
|
||||
<%def name="render_row( role, groups, users, ctr, anchored, curr_anchor )">
|
||||
<%def name="render_row( role, ctr, anchored, curr_anchor )">
|
||||
%if ctr % 2 == 1:
|
||||
<tr class="odd_row">
|
||||
%else:
|
||||
@@ -16,19 +16,13 @@
|
||||
<a class="action-button" href="${h.url_for( action='purge_role', role_id=role.id )}">Purge</a>
|
||||
</div>
|
||||
</td>
|
||||
<td>${role.description}</td>
|
||||
<td>${role.type}</td>
|
||||
<td>
|
||||
<ul>
|
||||
%for group in groups:
|
||||
<li>${group.name}</li>
|
||||
%endfor
|
||||
</ul>
|
||||
${len( role.users )}
|
||||
</td>
|
||||
<td>
|
||||
<ul>
|
||||
%for user in users:
|
||||
<li>${user.email}</li>
|
||||
%endfor
|
||||
</ul>
|
||||
${len( role.groups )}
|
||||
%if not anchored:
|
||||
<a name="${curr_anchor}"></a>
|
||||
<div style="float: right;"><a href="#TOP">top</a></div>
|
||||
@@ -43,12 +37,12 @@
|
||||
${render_msg( msg, messagetype )}
|
||||
%endif
|
||||
|
||||
%if len( roles_groups_users ) == 0:
|
||||
%if len( roles ) == 0:
|
||||
There are no deleted Galaxy roles
|
||||
%else:
|
||||
<table class="manage-table colored" border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<%
|
||||
render_quick_find = len( roles_groups_users ) > 50
|
||||
render_quick_find = len( roles ) > 50
|
||||
ctr = 0
|
||||
%>
|
||||
%if render_quick_find:
|
||||
@@ -69,34 +63,31 @@
|
||||
%endif
|
||||
<tr class="header">
|
||||
<td>Name</td>
|
||||
<td>Associated Groups</td>
|
||||
<td>Associated Users</td>
|
||||
<td>Description</td>
|
||||
<td>Type</td>
|
||||
<td>Users</td>
|
||||
<td>Groups</td>
|
||||
</tr>
|
||||
%for ctr, role_tuple in enumerate( roles_groups_users ):
|
||||
<%
|
||||
role = role_tuple[0]
|
||||
groups = role_tuple[1]
|
||||
users = role_tuple[2]
|
||||
%>
|
||||
%for ctr, role in enumerate( roles ):
|
||||
%if render_quick_find and not role.name.upper().startswith( curr_anchor ):
|
||||
<% anchored = False %>
|
||||
%endif
|
||||
%if render_quick_find and role.name.upper().startswith( curr_anchor ):
|
||||
%if not anchored:
|
||||
${render_row( role, groups, users, ctr, anchored, curr_anchor )}
|
||||
${render_row( role, ctr, anchored, curr_anchor )}
|
||||
<% anchored = True %>
|
||||
%else:
|
||||
${render_row( role, groups, users, ctr, anchored, curr_anchor )}
|
||||
${render_row( role, ctr, anchored, curr_anchor )}
|
||||
%endif
|
||||
%elif render_quick_find:
|
||||
%for anchor in anchors[ anchor_loc: ]:
|
||||
%if role.name.upper().startswith( anchor ):
|
||||
%if not anchored:
|
||||
<% curr_anchor = anchor %>
|
||||
${render_row( role, groups, users, ctr, anchored, curr_anchor )}
|
||||
${render_row( role, ctr, anchored, curr_anchor )}
|
||||
<% anchored = True %>
|
||||
%else:
|
||||
${render_row( role, groups, users, ctr, anchored, curr_anchor )}
|
||||
${render_row( role, ctr, anchored, curr_anchor )}
|
||||
%endif
|
||||
<%
|
||||
anchor_loc = anchors.index( anchor )
|
||||
@@ -105,7 +96,7 @@
|
||||
%endif
|
||||
%endfor
|
||||
%else:
|
||||
${render_row( role, groups, users, ctr, True, '' )}
|
||||
${render_row( role, ctr, True, '' )}
|
||||
%endif
|
||||
%endfor
|
||||
</table>
|
||||
|
||||
@@ -53,24 +53,24 @@ $().ready(function() {
|
||||
<form name="associate_group_role_user" id="associate_group_role_user" action="${h.url_for( action='group', group_id=group.id )}" method="post" >
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Roles associated with '${group.name}'<br/>
|
||||
<label>Roles associated with '${group.name}'</label>
|
||||
${render_select( "in_roles", in_roles )}<br/>
|
||||
<input type="submit" id="roles_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Roles not associated with '${group.name}'<br/>
|
||||
<label>Roles not associated with '${group.name}'</label>
|
||||
${render_select( "out_roles", out_roles )}<br/>
|
||||
<input type="submit" id="roles_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Users associated with '${group.name}'<br/>
|
||||
<label>Users associated with '${group.name}'</label>
|
||||
${render_select( "in_users", in_users )}<br/>
|
||||
<input type="submit" id="users_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Users not associated with '${group.name}'<br/>
|
||||
<label>Users not associated with '${group.name}'</label>
|
||||
${render_select( "out_users", out_users )}<br/>
|
||||
<input type="submit" id="users_add_button" value="<<"/>
|
||||
</div>
|
||||
|
||||
@@ -52,28 +52,29 @@ $().ready(function() {
|
||||
<div class="toolFormBody">
|
||||
<form name="associate_group_role_user" id="associate_group_role_user" action="${h.url_for( action='create_group' )}" method="post" >
|
||||
<div class="form-row">
|
||||
Name: <input name="name" type="textfield" value="" size=40"/>
|
||||
<label>Name:</label>
|
||||
<input name="name" type="textfield" value="" size=40"/>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Groups associated with new role<br/>
|
||||
<label>Groups associated with new role</label>
|
||||
${render_select( "in_roles", in_roles )}<br/>
|
||||
<input type="submit" id="roles_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Groups not associated with new role<br/>
|
||||
<label>Groups not associated with new role</label>
|
||||
${render_select( "out_roles", out_roles )}<br/>
|
||||
<input type="submit" id="roles_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Users associated with new role<br/>
|
||||
<label>Users associated with new role</label>
|
||||
${render_select( "in_users", in_users )}<br/>
|
||||
<input type="submit" id="users_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Users not associated with new role<br/>
|
||||
<label>Users not associated with new role</label>
|
||||
${render_select( "out_users", out_users )}<br/>
|
||||
<input type="submit" id="users_add_button" value="<<"/>
|
||||
</div>
|
||||
|
||||
@@ -53,24 +53,24 @@ $().ready(function() {
|
||||
<form name="associate_role_user_group" id="associate_role_user_group" action="${h.url_for( action='role', role_id=role.id )}" method="post" >
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Users associated with '${role.name}'<br/>
|
||||
<label>Users associated with '${role.name}'</label>
|
||||
${render_select( "in_users", in_users )}<br/>
|
||||
<input type="submit" id="users_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Users not associated with '${role.name}'<br/>
|
||||
<label>Users not associated with '${role.name}'</label>
|
||||
${render_select( "out_users", out_users )}<br/>
|
||||
<input type="submit" id="users_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Groups associated with '${role.name}'<br/>
|
||||
<label>Groups associated with '${role.name}'</label>
|
||||
${render_select( "in_groups", in_groups )}<br/>
|
||||
<input type="submit" id="groups_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Groups not associated with '${role.name}'<br/>
|
||||
<label>Groups not associated with '${role.name}'</label>
|
||||
${render_select( "out_groups", out_groups )}<br/>
|
||||
<input type="submit" id="groups_add_button" value="<<"/>
|
||||
</div>
|
||||
|
||||
@@ -52,33 +52,40 @@ $().ready(function() {
|
||||
<div class="toolFormBody">
|
||||
<form name="associate_role_group_user" id="associate_role_group_user" action="${h.url_for( action='create_role' )}" method="post" >
|
||||
<div class="form-row">
|
||||
Name: <input name="name" type="textfield" value="" size=40"/>
|
||||
Description: <input name="description" type="textfield" value="" size=40"/>
|
||||
<label>Name:</label>
|
||||
<input name="name" type="textfield" value="" size=40"/>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<label>Description:</label>
|
||||
<input name="description" type="textfield" value="" size=40"/>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Groups associated with new role<br/>
|
||||
<label>Groups associated with new role</label>
|
||||
${render_select( "in_groups", in_groups )}<br/>
|
||||
<input type="submit" id="groups_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Groups not associated with new role<br/>
|
||||
<label>Groups not associated with new role</label>
|
||||
${render_select( "out_groups", out_groups )}<br/>
|
||||
<input type="submit" id="groups_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Users associated with new role<br/>
|
||||
<label>Users associated with new role</label>
|
||||
${render_select( "in_users", in_users )}<br/>
|
||||
<input type="submit" id="users_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Users not associated with new role<br/>
|
||||
<label>Users not associated with new role</label>
|
||||
${render_select( "out_users", out_users )}<br/>
|
||||
<input type="submit" id="users_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="checkbox" name="create_group_for_role" value="yes" />Create a new group of the same name for this role
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<input type="submit" name="create_role_button" value="Save"/>
|
||||
</div>
|
||||
|
||||
@@ -53,24 +53,24 @@ $().ready(function() {
|
||||
<form name="associate_user_role_group" id="associate_user_role_group" action="${h.url_for( action='user', user_id=user.id )}" method="post" >
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Roles associated with '${user.email}'<br/>
|
||||
<label>Roles associated with '${user.email}'</label>
|
||||
${render_select( "in_roles", in_roles )}<br/>
|
||||
<input type="submit" id="roles_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Roles not associated with '${user.email}'<br/>
|
||||
<label>Roles not associated with '${user.email}'</label>
|
||||
${render_select( "out_roles", out_roles )}<br/>
|
||||
<input type="submit" id="roles_add_button" value="<<"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-row">
|
||||
<div style="float: left; margin-right: 10px;">
|
||||
Groups associated with '${user.email}'<br/>
|
||||
<label>Groups associated with '${user.email}'</label>
|
||||
${render_select( "in_groups", in_groups )}<br/>
|
||||
<input type="submit" id="groups_remove_button" value=">>"/>
|
||||
</div>
|
||||
<div>
|
||||
Groups not associated with '${user.email}'<br/>
|
||||
<label>Groups not associated with '${user.email}'</label>
|
||||
${render_select( "out_groups", out_groups )}<br/>
|
||||
<input type="submit" id="groups_add_button" value="<<"/>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
%endif
|
||||
|
||||
<div class="toolForm">
|
||||
<div class="toolFormTitle">Create account</div>
|
||||
<div class="toolFormTitle">Create user account</div>
|
||||
<div class="toolFormBody">
|
||||
<form name="form" action="${h.url_for( controller='admin', action='create_new_user' )}" method="post" >
|
||||
<div class="form-row">
|
||||
|
||||
Reference in New Issue
Block a user