rbac models

class Permission(models.Model):
    """
    權限表
    """
    perm_name = models.CharField(verbose_name='權限名', max_length=32)
    url = models.CharField(verbose_name='含正則的URL地址', max_length=128, unique=True)

    code_name = models.CharField(verbose_name='代碼', max_length=64, unique=True, null=False, blank=False)    # 視圖名代碼

    def __str__(self):
        return self.code_name

    class Meta:
        verbose_name = "權限"
        verbose_name_plural = verbose_name


class Role(models.Model):
    """
    角色表
    """
    role_name = models.CharField(verbose_name='角色名', max_length=32)
    permissions = models.ManyToManyField(verbose_name='擁有的全部權限', to=Permission, blank=True)

    def __str__(self):
        return self.role_name

    class Meta:
        verbose_name = "角色"
        verbose_name_plural = verbose_name


class AdminUser(AbstractUser):
    """ 管理員信息 """
    mobile = models.CharField(max_length=11, verbose_name='手機號碼', unique=True)
    roles = models.ManyToManyField(verbose_name='擁有的全部角色', to=Role, blank=True)

    def __str__(self):
        return self.username

    class Meta:
        db_table = 'admin_user'
        verbose_name = '管理者'
        verbose_name_plural = verbose_name

 

 

 

class Menu(models.Model):
    """
    菜單
    """
    title = models.CharField(verbose_name='菜單', max_length=32)
    icon = models.CharField(verbose_name='圖標', max_length=32)

    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, unique=True)

    name = models.CharField(verbose_name='代碼', max_length=64, unique=True, null=False, blank=False)

    pid = models.ForeignKey(verbose_name='默認選中權限', to='Permission', related_name='ps', null=True, blank=True,
                            help_text="對於沒法做爲菜單的URL,能夠爲其選擇一個能夠做爲菜單的權限,那麼訪問時,則默認選中此權限",
                            limit_choices_to={'menu__isnull': False}, on_delete=models.SET_NULL)

    menu = models.ForeignKey(verbose_name='菜單', to='Menu', null=True, blank=True, help_text='null表示非菜單',
                             on_delete=models.SET_NULL)

    def __str__(self):
        return self.title


class Role(models.Model):
    """
    角色
    """
    title = models.CharField(verbose_name='角色名稱', max_length=32)
    permissions = models.ManyToManyField(verbose_name='擁有的全部權限', to='Permission', blank=True)

    def __str__(self):
        return self.title


class UserInfo(models.Model):
    """
    用戶表
    """
    
    
    name = models.CharField(verbose_name='用戶名', max_length=32)
    password = models.CharField(verbose_name='密碼', max_length=64)
    email = models.CharField(verbose_name='郵箱', max_length=32)
    roles = models.ManyToManyField(verbose_name='擁有的全部角色', to='Role', blank=True)

    def __str__(self):
        return self.name

 

 

 

.url

相關文章
相關標籤/搜索