Django权限

from django.db import models


class Permission(models.Model):
	# 权限描述
	name = models.CharField(_('name'), max_length=255)
    # 权限(需要用来验证的字段)
    codename = models.CharField(_('codename'), max_length=100)
    # 权限所属的模型类(外键)
    content_type = models.ForeignKey(ContentType, verbose_name=_('content type'))
	
    class Meta:
        proxy = True
        default_permissions = ()
        verbose_name = 'permission'
        verbose_name_plural = 'permissions'
        permissions = (
            ('list_permission', _('Can see permission list')),
            ('assign_resource', _('Can assign resource to user')),
        )	

class ContentType(models.Model):
	# 应用名
    app_label = models.CharField(max_length=100)
    # 模型类
    model = models.CharField(_('python model class name'), max_length=100)


class Group(models.Model):
	# 组名
	name = models.CharField(_('name'), max_length=80, unique=True)
	description = models.CharField(_('description'), max_length=255, blank=True)
	parent_id = models.IntegerField(_('parent ID'))
	# 权限列表(多对多:一个组可以拥有多个权限,一个权限可以被多个组拥有)
    permissions = models.ManyToManyField(Permission, verbose_name=_('permissions'), blank=True)

    class Meta:
        proxy = True
        verbose_name = 'role'
        verbose_name_plural = 'roles'
        default_permissions = ()
        permissions = (
            ('list_role', _('Can see role list')),
            ('detail_role', _('Can see role detail')),
            ('create_role', _('Can create role')),
            ('update_role', _('Can update role')),
            ('delete_role', _('Can delete role')),
            ('update_role_permission', _('Can update role permission')),
            ('update_role_user', _('Can update role user')),
        )

class User(models.Model):
	password = models.CharField(_('password'), max_length=128)
    last_login = models.DateTimeField(_('last login'), blank=True, null=True)
    is_active = True
    REQUIRED_FIELDS = []

	is_superuser = models.BooleanField()
	
	# 用户所属组(多对多:一个用户可以属于多个组,一个组也可以有多个用户)
	groups = models.ManyToManyField(Group, verbose_name=_('groups'), blank=True, related_name="user_set", related_query_name="user")
	# 用户权限列表(多对多:一个用户可有多个权限,一个权限也可以被多个用户拥有)
    user_permissions = models.ManyToManyField(Permission, verbose_name=_('user permissions'), blank=True, related_name="user_set", related_query_name="user")
    
    username = models.CharField( _('username'), max_length=150, unique=True)
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=150, blank=True)
    email = models.EmailField(_('email address'), blank=True)
    is_staff = models.BooleanField(_('staff status'), default=False)
    is_active = models.BooleanField(_('active'), default=True)
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

    class Meta:
        db_table = 'auth_user'
        verbose_name = 'user'
        verbose_name_plural = 'users'
        # ordering = ['-id']
        permissions = (
            ('list_user', _('Can see user list')),
            ('detail_user', _('Can see user detail')),
            ('create_user', _('Can create user')),
            ('update_user', _('Can update user')),
            ('delete_user', _('Can delete user')),
            ('update_user_permission', _('Can update user permission')),
            ('update_user_role', _('Can update user role')),
            # ('update_user_team', _('Can update user team')),
            ('reset_password', _('Can reset user password')),
            ('active_user', _('Can active or inactive user')),
        )
        default_permissions = ()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值