py17day26

CRM项目

一,权限管理

1.表结构设计:

        
        第一版:
            1. 权限表(含有正则表达式),permission
            
                id         url                        title 
                 1      /userinfo/                   用户列表
                 2      /userinfo/(\d+)/delete/      删除用户
                 3      /userinfo/(\d+)/change/      修改用户
                 4      /userinfo/add/               添加用户
                 
                 
            2. 用户表,userinfo
                id       username      password    
                 1        yql            123         
                 2        wxp            123         
                 3        zmx            123         
                 4        ll             123         
                
                
            3. 用户和权限关系表
                id   用户ID    权限ID
                       1         1
                       2         1
                       2         2
                       2         3
                       2         4
                       3         1
                       4         1
                       4         2
                       4         3
                       4         4
            问题:用户分配权限时,麻烦

 

 

        第二版:
            
            0. 权限组,group
                id          title 
                 1        用户组
                 2        订单组
            
            
            
            1. 权限表(含有正则表达式),permission
            
                id         url                        title                code            group_i1       is_menu
                 1      /userinfo/                   用户列表              list               1            true
                 2      /userinfo/(\d+)/delete/      删除用户              del                1            false
                 3      /userinfo/(\d+)/change/      修改用户              edit               1            false
                 4      /userinfo/add/               添加用户              add                1            true
                 5      /order/add/                  ...                   add                2            true
                 6      /order/(\d+)/delete/                               del                2            false
                 7      /order/(\d+)/change/                               edit               2            false
                 8      /order/                                            list               2            true
                 
                 
            2. 用户表,userinfo
                id       username      password    
                 1        yql            123         
                 2        wxp            123         
                 3        zmx            123         
                 4        ll             123    
            
            
            3. 角色表,role
                id       title 
                 1       销售员
                 2       销售经理
                 3       市场专员
                 4       市场经理
                 5       IT
                 6       CTO
                 7       销售市场总监
                 8       CEO
                
            4. 用户角色关系表
                用户ID      角色ID
                 1           1
                 2           1
                 2           2
                 3           1
                 3           2
                 3           7
                
            5. 角色和权限关系表
                角色ID      权限ID
                  1           1
                  2           1
                  2           4
                  7           1
                  7           3
                  7           4
                  8           1
                  8           2
                  8           3
                  8           4
                
            
            注意:根据用户找权限
                - 用户具有的所有角色
                - 再根据角色找所有权限(去重)

 

rbac.models.py

from django.db import models

class Group(models.Model):
    """
    权限组
    """
    title = models.CharField(max_length=32)
    #parent = models.ForeignKey(to="Group",related_name='xx',null=True,blank=True)
    #is_group = models.BooleanField(verbose_name='是否是组')
    class Meta:
        verbose_name_plural = "权限组表"
    def __str__(self):
        return self.title
class Permission(models.Model):
    """
    权限表
    """
    title = models.CharField(verbose_name='标题',max_length=32)
    url = models.CharField(verbose_name="含正则的URL",max_length=128)
    code = models.CharField(verbose_name="权限代号",max_length=16)
    group = models.ForeignKey(verbose_name="权限组",to="Group",limit_choices_to={'is_group':True})
    is_menu = models.BooleanField(verbose_name="是否是菜单")
    class Meta:
        verbose_name_plural = "权限表"

    def __str__(self):
        return self.title

class UserInfo(models.Model):
    """
    用户表
    """
    username = models.CharField(verbose_name="用户名",max_length=32)
    password = models.CharField(verbose_name='密码',max_length=64)
    roles = models.ManyToManyField(verbose_name='具有所有角色',to="Role",blank=True)

    class Meta:
        verbose_name_plural = "用户表"

    def __str__(self):
        return self.username


class Role(models.Model):
    """
    角色表
    """
    title = models.CharField(verbose_name='角色名称',max_length=32)
    permissions = models.ManyToManyField(verbose_name="具有所有权限",to='Permission',blank=True)

    class Meta:
        verbose_name_plural = "角色表"

    def __str__(self):
        return self.title

 

posted @ 2017-11-05 12:03  Dylan_Wu  阅读(46)  评论(0)    收藏  举报