zoukankan      html  css  js  c++  java
  • 分配权限

    def distribute_permissions(request):
        uid = request.GET.get('uid')
        user = User.objects.filter(id=uid)
        user_list = User.objects.all()
        roles = Role.objects.all()
        rid = request.GET.get('rid')
        if request.method == "POST" and request.POST.get("postType") == "role":
            print(request.POST.getlist('role'))
            id_list = request.POST.getlist('role')
            user.first().roles.set(id_list)
    
        if request.method == "POST" and request.POST.get("postType") == "permission":
            id_list = request.POST.getlist('permission_id')
            Role.objects.get(pk=rid).permissions.set(id_list)
    
        if uid:
            role_id_list = User.objects.get(pk=uid).roles.all().values_list("pk")
            print('role_id_list',role_id_list)
            role_id_list = [item[0] for item in role_id_list]
            if rid:
                per_id_list = Role.objects.filter(pk=rid).values_list("permissions__pk")
            else:
                per_id_list = User.objects.get(pk=uid).roles.values_list("permissions__pk").distinct()
            per_id_list = [item[0] for item in per_id_list]
        return render(request, 'distribute_permissions.html', locals())
    
    def permissions_tree(request):
        permissions = Permission.objects.values('pk','title','url','menu__title','menu__pk','pid')
        return JsonResponse(list(permissions),safe=False)
    views.py
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <link href="https://cdn.bootcss.com/twitter-bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet">
        <script src="/static/jquery-3.3.1.js"></script>
        <style>
            .active {
                background-color: yellow;
            }
        </style>
    </head>
    <body>
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-3" style="background-color: pink">
                    用户信息
                    <ul>
                        {% for user in user_list %}
                            <li><a href="?uid={{ user.pk }}">{{ user }}</a></li>
                        {% endfor %}
    
                    </ul>
                </div>
                <div class="col-md-3">
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn btn-success">保存</button>
                        <input type="hidden" name="postType" value="role">
                         <table class="table">
                        <thead>
                            <tr>
                                <th>角色</th>
                                <th>选择</th>
                            </tr>
                        </thead>
                        <tbody>
                        {% for role in roles %}
                            <tr {% if role.id|safe == rid %} class="active" {% endif %}>
                                <td><a href="?uid={{ uid }}&rid={{ role.id }}">{{ role }}</a></td>
                                {% if role.id in role_id_list %}
                                    <td><input type="checkbox" name="role" value="{{ role.id }}" checked></td>
                                {% else %}
                                    <td><input type="checkbox" name="role" value="{{ role.id }}"></td>
                                {% endif %}
                            </tr>
                        {% endfor %}
                        </tbody>
                    </table>
                    </form>
                </div>
                <div class="col-md-6">
                    <form action="" method="post">
                        {% csrf_token %}
                        <input type="hidden" name="postType" value="permission">
                        {% if rid %}
                            <button class="btn btn-success">保存</button>
                        {% endif %}
                        <table class="table" id="body">
                        <tbody></tbody>
                    </table>
                    </form>
                </div>
            </div>
        </div>
    </body>
    <script>
        $.ajax({
            url:'/permissions_tree/',
            method:'get',
            success:function (res) {
                $.each(res,function (i,permission) {
                    console.log(i,permission);
                    var menu_title = permission['menu__title'];
                    var menu_pk = permission['menu__pk'];
                    var url = permission['url'];
                    var pid = permission['pid'];
                    var pk = permission['pk'];
                    var title = permission['title'];
                    if (menu_title){
                        if ($('#menu_'+menu_pk).length) {
                            var s = `
                            <tr id='per_${pk}'>
                                <td><input type='checkbox' name='permission_id' value='${pk}'>${title}</td>
                            </tr>
                            `;
                            $('#menu_'+menu_pk).parent().append(s)
                        }else {
                            var s = `<tr class='root' id='menu_${menu_pk}'><td>${menu_title}</td></tr>
                                <tr id='per_${pk}'>
                                    <td><input type='checkbox' name='permission_id' value='${pk}'>${title}</td>
                                </tr>`;
                        $('#body').append(s);
                        }
                    }else {
                        var s = `<td><input type='checkbox' name='permission_id' value='${pk}'>${title}</td>`;
                        $('#per_'+pid).append(s);
                    }
                });
                var per_id_list ={{ per_id_list }};
                $.each(per_id_list,function (i,j) {
                    $("#body [value='"+j+"']").prop('checked',true)
                })
            }
        })
    </script>
    </html>
    distribute_permissions.html
  • 相关阅读:
    linux中压缩、解压缩命令
    linux中的sed指令
    linux中shell编程(一)
    linux中的正则表达式
    linux中的管道和重定向
    linux中用户、组和权限相关指令
    linux中bash常见的指令
    linux文本操作相关指令
    java.lang.OutOfMemoryError 解决程序启动内存溢出问题
    Java常用排序算法/程序员必须掌握的8大排序算法
  • 原文地址:https://www.cnblogs.com/xuqidong/p/12649930.html
Copyright © 2011-2022 走看看