root/galaxy-central/templates/dataset/security_common.mako @ 3

リビジョン 2, 5.9 KB (コミッタ: hatakeyama, 14 年 前)

import galaxy-central

行番号 
1<%def name="render_select( current_actions, action_key, action, all_roles )">
2    <%
3        import sets
4        in_roles = sets.Set()
5        for a in current_actions:
6            if a.action == action.action:
7                in_roles.add( a.role )
8        out_roles = filter( lambda x: x not in in_roles, all_roles )
9    %>
10    <p>
11        <b>${action.action}:</b> ${action.description}
12        %if action == trans.app.security_agent.permitted_actions.DATASET_ACCESS:
13            <br/>
14            NOTE: Users must have every role associated with this dataset in order to access it
15        %endif
16    </p>
17    <div style="width: 100%; white-space: nowrap;">
18        <div style="float: left; width: 50%;">
19            Roles associated:<br/>
20            <select name="${action_key}_in" id="${action_key}_in_select" class="in_select" style="max-width: 98%; width: 98%; height: 150px; font-size: 100%;" multiple>
21                %for role in in_roles:
22                    <option value="${role.id}">${role.name}</option>
23                %endfor
24            </select> <br/>
25            <div style="width: 98%; text-align: right"><input type="submit" id="${action_key}_remove_button" class="role_remove_button" value=">>"/></div>
26        </div>
27        <div style="width: 50%;">
28            Roles not associated:<br/>
29            <select name="${action_key}_out" id="${action_key}_out_select" style="max-width: 98%; width: 98%; height: 150px; font-size: 100%;" multiple>
30                %for role in out_roles:
31                    <option value="${role.id}">${role.name}</option>
32                %endfor
33            </select> <br/>
34            <input type="submit" id="${action_key}_add_button" class="role_add_button" value="<<"/>
35        </div>
36    </div>
37</%def>
38
39## Any permission ( e.g., 'DATASET_ACCESS' ) included in the do_not_render param will not be rendered on the page.
40<%def name="render_permission_form( obj, obj_name, form_url, all_roles, do_not_render=[] )">
41    <%
42        if isinstance( obj, trans.app.model.User ):
43            current_actions = obj.default_permissions
44            permitted_actions = trans.app.model.Dataset.permitted_actions.items()
45            obj_str = 'user %s' % obj_name
46            obj_type = 'dataset'
47        elif isinstance( obj, trans.app.model.History ):
48            current_actions = obj.default_permissions
49            permitted_actions = trans.app.model.Dataset.permitted_actions.items()
50            obj_str = 'history %s' % obj_name
51            obj_type = 'dataset'
52        elif isinstance( obj, trans.app.model.Dataset ):
53            current_actions = obj.actions
54            permitted_actions = trans.app.model.Dataset.permitted_actions.items()
55            obj_str = obj_name
56            obj_type = 'dataset'
57        elif isinstance( obj, trans.app.model.LibraryDatasetDatasetAssociation ):
58            current_actions = obj.actions + obj.dataset.actions
59            permitted_actions = trans.app.model.Dataset.permitted_actions.items() + trans.app.model.Library.permitted_actions.items()
60            obj_str = obj_name
61            obj_type = 'dataset'
62        elif isinstance( obj, trans.app.model.Library ):
63            current_actions = obj.actions
64            permitted_actions = trans.app.model.Library.permitted_actions.items()
65            obj_str = 'library %s' % obj_name
66            obj_type = 'library'
67        elif isinstance( obj, trans.app.model.LibraryDataset ):
68            current_actions = obj.actions
69            permitted_actions = trans.app.model.Library.permitted_actions.items()
70            obj_str = 'library dataset %s' % obj_name
71            obj_type = 'library'
72        elif isinstance( obj, trans.app.model.LibraryFolder ):
73            current_actions = obj.actions
74            permitted_actions = trans.app.model.Library.permitted_actions.items()
75            obj_str = 'library folder %s' % obj_name
76            obj_type = 'library'
77        else:
78            current_actions = []
79            permitted_actions = {}.items()
80            obj_str = 'unknown object %s' %obj_name
81            obj_type = ''
82    %>
83    <script type="text/javascript">
84        $( document ).ready( function () {
85            $( '.role_add_button' ).click( function() {
86                var action = this.id.substring( 0, this.id.lastIndexOf( '_add_button' ) )
87                var in_select = '#' + action + '_in_select';
88                var out_select = '#' + action + '_out_select';
89                return !$( out_select + ' option:selected' ).remove().appendTo( in_select );
90            });
91            $( '.role_remove_button' ).click( function() {
92                var action = this.id.substring( 0, this.id.lastIndexOf( '_remove_button' ) )
93                var in_select = '#' + action + '_in_select';
94                var out_select = '#' + action + '_out_select';
95                return !$( in_select + ' option:selected' ).remove().appendTo( out_select );
96            });
97            $( 'form#edit_role_associations' ).submit( function() {
98                $( '.in_select option' ).each(function( i ) {
99                    $( this ).attr( "selected", "selected" );
100                });
101            });
102        });
103    </script>
104    <div class="toolForm">
105        <div class="toolFormTitle">Manage ${obj_type} permissions on ${obj_str}</div>
106        <div class="toolFormBody">
107            <form name="edit_role_associations" id="edit_role_associations" action="${form_url}" method="post">
108                <div class="form-row"></div>
109                %for k, v in permitted_actions:
110                    %if k not in do_not_render:
111                        <div class="form-row">
112                            ${render_select( current_actions, k, v, all_roles )}
113                        </div>
114                    %endif
115                %endfor
116                <div class="form-row">
117                    <input type="submit" name="update_roles_button" value="Save"/>
118                </div>
119            </form>
120        </div>
121    </div>
122    <p/>
123</%def>
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。