feat: 支持通过python manage.py createsuperuser创建管理员用户
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from django.contrib.auth.models import AbstractUser
|
from django.contrib.auth.models import AbstractUser, UserManager
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist, ValidationError
|
||||||
from application import dispatch
|
from application import dispatch
|
||||||
from dvadmin.utils.models import CoreModel, table_prefix
|
from dvadmin.utils.models import CoreModel, table_prefix
|
||||||
|
|
||||||
@@ -13,6 +13,34 @@ STATUS_CHOICES = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Role(CoreModel):
|
||||||
|
name = models.CharField(max_length=64, verbose_name="角色名称", help_text="角色名称")
|
||||||
|
key = models.CharField(max_length=64, unique=True, verbose_name="权限字符", help_text="权限字符")
|
||||||
|
sort = models.IntegerField(default=1, verbose_name="角色顺序", help_text="角色顺序")
|
||||||
|
status = models.BooleanField(default=True, verbose_name="角色状态", help_text="角色状态")
|
||||||
|
admin = models.BooleanField(default=False, verbose_name="是否为admin", help_text="是否为admin")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = table_prefix + "system_role"
|
||||||
|
verbose_name = "角色表"
|
||||||
|
verbose_name_plural = verbose_name
|
||||||
|
ordering = ("sort",)
|
||||||
|
|
||||||
|
|
||||||
|
class CustomUserManager(UserManager):
|
||||||
|
|
||||||
|
def create_superuser(self, username, email=None, password=None, **extra_fields):
|
||||||
|
user = super(CustomUserManager, self).create_superuser(username, email, password, **extra_fields)
|
||||||
|
user.set_password(password)
|
||||||
|
try:
|
||||||
|
user.role.add(Role.objects.get(name="管理员"))
|
||||||
|
user.save(using=self._db)
|
||||||
|
return user
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
user.delete()
|
||||||
|
raise ValidationError("角色`管理员`不存在, 创建失败, 请先执行python manage.py init")
|
||||||
|
|
||||||
|
|
||||||
class Users(CoreModel, AbstractUser):
|
class Users(CoreModel, AbstractUser):
|
||||||
username = models.CharField(max_length=150, unique=True, db_index=True, verbose_name="用户账号",
|
username = models.CharField(max_length=150, unique=True, db_index=True, verbose_name="用户账号",
|
||||||
help_text="用户账号")
|
help_text="用户账号")
|
||||||
@@ -48,6 +76,7 @@ class Users(CoreModel, AbstractUser):
|
|||||||
blank=True,
|
blank=True,
|
||||||
help_text="关联部门",
|
help_text="关联部门",
|
||||||
)
|
)
|
||||||
|
objects = CustomUserManager()
|
||||||
|
|
||||||
def set_password(self, raw_password):
|
def set_password(self, raw_password):
|
||||||
super().set_password(hashlib.md5(raw_password.encode(encoding="UTF-8")).hexdigest())
|
super().set_password(hashlib.md5(raw_password.encode(encoding="UTF-8")).hexdigest())
|
||||||
@@ -76,20 +105,6 @@ class Post(CoreModel):
|
|||||||
ordering = ("sort",)
|
ordering = ("sort",)
|
||||||
|
|
||||||
|
|
||||||
class Role(CoreModel):
|
|
||||||
name = models.CharField(max_length=64, verbose_name="角色名称", help_text="角色名称")
|
|
||||||
key = models.CharField(max_length=64, unique=True, verbose_name="权限字符", help_text="权限字符")
|
|
||||||
sort = models.IntegerField(default=1, verbose_name="角色顺序", help_text="角色顺序")
|
|
||||||
status = models.BooleanField(default=True, verbose_name="角色状态", help_text="角色状态")
|
|
||||||
admin = models.BooleanField(default=False, verbose_name="是否为admin", help_text="是否为admin")
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
db_table = table_prefix + "system_role"
|
|
||||||
verbose_name = "角色表"
|
|
||||||
verbose_name_plural = verbose_name
|
|
||||||
ordering = ("sort",)
|
|
||||||
|
|
||||||
|
|
||||||
class Dept(CoreModel):
|
class Dept(CoreModel):
|
||||||
name = models.CharField(max_length=64, verbose_name="部门名称", help_text="部门名称")
|
name = models.CharField(max_length=64, verbose_name="部门名称", help_text="部门名称")
|
||||||
key = models.CharField(max_length=64, unique=True, null=True, blank=True, verbose_name="关联字符",
|
key = models.CharField(max_length=64, unique=True, null=True, blank=True, verbose_name="关联字符",
|
||||||
|
|||||||
@@ -293,6 +293,11 @@ class UserViewSet(CustomModelViewSet):
|
|||||||
'dept_id': dept.id,
|
'dept_id': dept.id,
|
||||||
'dept_name': dept.name
|
'dept_name': dept.name
|
||||||
}
|
}
|
||||||
|
else:
|
||||||
|
result['dept_info'] = {
|
||||||
|
'dept_id': None,
|
||||||
|
'dept_name': "暂无部门"
|
||||||
|
}
|
||||||
role = getattr(user, 'role', None)
|
role = getattr(user, 'role', None)
|
||||||
if role:
|
if role:
|
||||||
result['role_info'] = role.values('id', 'name', 'key')
|
result['role_info'] = role.values('id', 'name', 'key')
|
||||||
|
|||||||
Reference in New Issue
Block a user