rbac03 权限力度控制到按钮

為{幸葍}努か 提交于 2019-12-01 07:29:21

  修改数据库 给权限起别名 == 》 方便用于权限力度控制到按钮

class Permission(models.Model):
    """
    权限表
    """
    title = models.CharField(verbose_name='标题', max_length=32)
    url = models.CharField(verbose_name='含正则的URL', max_length=128)
    menu = models.ForeignKey(verbose_name='所属菜单', null=True, blank=True, to='Menu', on_delete=models.CASCADE)
    pid = models.ForeignKey(verbose_name="关联的权限",to='Permission',null=True,blank=True,related_name='parents',on_delete=models.CASCADE)
    name = models.CharField(verbose_name="url别名",max_length=32,unique=True) ######################       def __str__(self):           return self.title

 

 

 

  初始化 别名存入session 用于判断

    

 permission_queryset = current_user.roles.all().filter(permissions__isnull=False).values('permissions__id',
                                                                                            'permissions__title',
                                                                                            'permissions__name',
                                                                                            'permissions__menu_id',
                                                                                            'permissions__menu__title',
                                                                                            'permissions__menu__icon',
                                                                                            'permissions__pid',
                                                                                            "permissions__pid__url",
                                                                                            "permissions__pid__title",
                                                                                            'permissions__url').distinct()

 
permission_dict = {}#######改字典 键为name
    for item in permission_queryset:
        permission_dict[item['permissions__name']] = {
            'id':item['permissions__id'],
            'url':item['permissions__url'],
            'pid':item['permissions__pid'],
            'title':item['permissions__title'],
            'p_title':item['permissions__pid__title'],
            'p_url':item['permissions__pid__url']
        }

 

  中间件 把list 改 dict

  自定制过滤器:

     ###################filter############## 

   逻辑判断用 filter    

@register.filter
def has_permission(request,name):
    if name in request.session[settings.PERMISSION_SESSION_KEY]:
        return True

    编辑删除按钮:

    

 {% for row in data_list %}
                <tr>
                    <td>{{ row.id }}</td>
                    <td>{{ row.name }}</td>
                    <td>{{ row.age }}</td>
                    <td>{{ row.email }}</td>
                    <td>{{ row.company }}</td>
                    {% if request|has_permission:'customer_edit' or request|has_permission:'customer_del' %}##########
                    <td>
                    {% if request|has_permission:'customer_edit' %}####
                        <a style="color: #333333;" href="/customer/edit/{{ row.id }}/">
                            <i class="fa fa-edit" aria-hidden="true"></i></a>
                      {% endif %}  |#######
                    {% if request|has_permission:'customer_del' %}#############
                        <a style="color: #d9534f;" href="/customer/del/{{ row.id }}/"><i class="fa fa-trash-o"></i></a>
                        {% endif %}######
                    </td>
                {% endif %}###########

                </tr>
            {% endfor %}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!