Files @ 3dcf1f82311a
Branch filter:

Location: kallithea/kallithea/templates/admin/user_groups/user_group_edit_perms.html

mads
controllers: avoid setting request state in controller instances - set it in the thread global request variable

In TurboGears, controllers are singletons and we should avoid using instance
variables for any volatile data. Instead, use the "global thread local" request
context.

With everything in request, some use of c is dropped.

Note: kallithea/controllers/api/__init__.py still use instance variables that
will cause problems with TurboGears.
${h.form(url('edit_user_group_perms_update', id=c.user_group.users_group_id))}
<div class="form">
   <div>
        <div>
            <table id="permissions_manage" class="table">
                <tr>
                    <td>${_('None')}</td>
                    <td>${_('Read')}</td>
                    <td>${_('Write')}</td>
                    <td>${_('Admin')}</td>
                    <td>${_('User/User Group')}</td>
                    <td></td>
                </tr>
                ## USERS
                %for r2p in c.user_group.user_user_group_to_perm:
                    ##forbid revoking permission from yourself, except if you're an super admin
                    <tr id="id${id(r2p.user.username)}">
                      %if request.authuser.user_id != r2p.user.user_id or request.authuser.is_admin:
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.none')}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.read')}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.write')}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.admin')}</td>
                        <td>
                            ${h.gravatar(r2p.user.email, cls="perm-gravatar", size=14)}
                            %if h.HasPermissionAny('hg.admin')() and r2p.user.username != 'default':
                             <a href="${h.url('edit_user',id=r2p.user.user_id)}">${r2p.user.username}</a>
                            %else:
                             ${r2p.user.username if r2p.user.username != 'default' else _('Default')}
                            %endif
                        </td>
                        <td>
                          %if r2p.user.username !='default':
                            <span style="color:#da4f49" class="btn btn-default btn-xs" onclick="ajaxActionRevoke(${r2p.user.user_id}, 'user', '${'id%s'%id(r2p.user.username)}', '${r2p.user.username}')">
                             <i class="icon-minus-circled"></i> ${_('Revoke')}
                            </span>
                          %endif
                        </td>
                      %else:
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.none', disabled="disabled")}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.read', disabled="disabled")}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.write', disabled="disabled")}</td>
                        <td>${h.radio('u_perm_%s' % r2p.user.username,'usergroup.admin', disabled="disabled")}</td>
                        <td>
                            ${h.gravatar(r2p.user.email, cls="perm-gravatar", size=14)}
                            ${r2p.user.username if r2p.user.username != 'default' else _('Default')}
                        </td>
                        <td><i class="icon-user"></i> ${_('Admin')}</td>
                      %endif
                    </tr>
                %endfor

                ## USER GROUPS
                %for g2p in c.user_group.user_group_user_group_to_perm:
                    <tr id="id${id(g2p.user_group.users_group_name)}">
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.none')}</td>
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.read')}</td>
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.write')}</td>
                        <td>${h.radio('g_perm_%s' % g2p.user_group.users_group_name,'usergroup.admin')}</td>
                        <td>
                            <i class="icon-users"></i>
                            %if h.HasPermissionAny('hg.admin')():
                             <a href="${h.url('edit_users_group',id=g2p.user_group.users_group_id)}">
                                 ${g2p.user_group.users_group_name}
                             </a>
                            %else:
                             ${g2p.user_group.users_group_name}
                            %endif
                        </td>
                        <td>
                            <span style="color:#da4f49" class="btn btn-default btn-xs" onclick="ajaxActionRevoke(${g2p.user_group.users_group_id}, 'user_group', '${'id%s'%id(g2p.user_group.users_group_name)}', '${g2p.user_group.users_group_name}')">
                            <i class="icon-minus-circled"></i> ${_('Revoke')}
                            </span>
                        </td>
                    </tr>
                %endfor

                <%
                _tmpl = h.literal("""'\
                    <td><input type="radio" value="usergroup.none" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
                    <td><input type="radio" value="usergroup.read" checked="checked" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
                    <td><input type="radio" value="usergroup.write" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
                    <td><input type="radio" value="usergroup.admin" name="perm_new_member_{0}" id="perm_new_member_{0}"></td> \
                    <td class="ac"> \
                        <div class="perm_ac" id="perm_ac_{0}"> \
                            <input class="yui-ac-input" id="perm_new_member_name_{0}" name="perm_new_member_name_{0}" value="" type="text"> \
                            <input id="perm_new_member_type_{0}" name="perm_new_member_type_{0}" value="" type="hidden">  \
                            <div id="perm_container_{0}"></div> \
                        </div> \
                    </td> \
                    <td></td>'""")
                %>
                ## ADD HERE DYNAMICALLY NEW INPUTS FROM THE '_tmpl'
                <tr class="new_members last_new_member" id="add_perm_input"><td colspan="6"></td></tr>
                <tr>
                    <td colspan="6">
                        <span id="add_perm" class="btn">
                            <i class="icon-plus"></i> ${_('Add new')}
                        </span>
                    </td>
                </tr>
            </table>
        </div>
        <div class="buttons">
            ${h.submit('save',_('Save'),class_="btn btn-default")}
            ${h.reset('reset',_('Reset'),class_="btn btn-default")}
        </div>
   </div>
</div>
${h.end_form()}

<script type="text/javascript">
    function ajaxActionRevoke(obj_id, obj_type, field_id, obj_name) {
        url = "${h.url('edit_user_group_perms_delete', id=c.user_group.users_group_id)}";
        var revoke_msg = _TM['Confirm to revoke permission for {0}: {1} ?'].format(obj_type.replace('_', ' '), obj_name);
        if (confirm(revoke_msg)){
            ajaxActionRevokePermission(url, obj_id, obj_type, field_id);
        }
    };

    $(document).ready(function () {
        if (!$('#perm_new_member_name').hasClass('error')) {
            $('#add_perm_input').hide();
        }
        $('#add_perm').click(function () {
            addPermAction(${_tmpl}, ${c.users_array|n}, ${c.user_groups_array|n});
        });
    });
</script>