115 lines
3.7 KiB
Python
115 lines
3.7 KiB
Python
import os
|
|
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth import get_user_model
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = '初始化系统用户数据'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument(
|
|
'--reset',
|
|
action='store_true',
|
|
help='重置所有用户数据',
|
|
)
|
|
|
|
def handle(self, *args, **options):
|
|
if options['reset']:
|
|
self.stdout.write(self.style.WARNING('正在清除所有用户...'))
|
|
User.objects.filter(is_superuser=False).delete()
|
|
self.stdout.write(self.style.SUCCESS('普通用户已清除'))
|
|
|
|
# 创建超级管理员
|
|
self._create_superadmin()
|
|
|
|
# 创建测试角色用户
|
|
self._create_test_users()
|
|
|
|
self.stdout.write(self.style.SUCCESS('\n[完成] 用户初始化完成'))
|
|
|
|
def _create_superadmin(self):
|
|
"""创建超级管理员"""
|
|
username = 'admin'
|
|
password = 'admin123'
|
|
|
|
user, created = User.objects.get_or_create(
|
|
username=username,
|
|
defaults={
|
|
'is_staff': True,
|
|
'is_superuser': True,
|
|
'real_name': '系统管理员',
|
|
'role_type': 'super_admin',
|
|
'status': 1,
|
|
}
|
|
)
|
|
user.set_password(password)
|
|
user.save()
|
|
|
|
if created:
|
|
self.stdout.write(self.style.SUCCESS(f'[创建] 超级管理员: {username} / {password}'))
|
|
else:
|
|
self.stdout.write(self.style.WARNING(f'[重置] 管理员密码: {username} / {password}'))
|
|
|
|
def _create_test_users(self):
|
|
"""创建测试用户"""
|
|
test_users = [
|
|
{
|
|
'username': 'doctor1',
|
|
'password': 'doctor123',
|
|
'real_name': '张医生',
|
|
'role_type': 'doctor',
|
|
'phone': '13800138001',
|
|
'title_name': '主任医师',
|
|
'major': '心内科',
|
|
},
|
|
{
|
|
'username': 'student1',
|
|
'password': 'student123',
|
|
'real_name': '李同学',
|
|
'role_type': 'student',
|
|
'phone': '13800138002',
|
|
'training_stage': '规培',
|
|
'learning_target': '掌握常见病诊断',
|
|
},
|
|
{
|
|
'username': 'teacher1',
|
|
'password': 'teacher123',
|
|
'real_name': '王老师',
|
|
'role_type': 'teacher',
|
|
'phone': '13800138003',
|
|
'title_name': '副主任医师',
|
|
'major': '呼吸内科',
|
|
},
|
|
{
|
|
'username': 'content_admin',
|
|
'password': 'content123',
|
|
'real_name': '内容管理员',
|
|
'role_type': 'content_admin',
|
|
'phone': '13800138004',
|
|
},
|
|
]
|
|
|
|
for user_data in test_users:
|
|
password = user_data.pop('password')
|
|
user, created = User.objects.get_or_create(
|
|
username=user_data['username'],
|
|
defaults={**user_data, 'status': 1}
|
|
)
|
|
user.set_password(password)
|
|
user.save()
|
|
|
|
if created:
|
|
self.stdout.write(
|
|
self.style.SUCCESS(
|
|
f'[创建] 用户: {user_data["username"]} / {password} ({user_data["real_name"]})'
|
|
)
|
|
)
|
|
else:
|
|
self.stdout.write(
|
|
self.style.WARNING(
|
|
f'[已存在] 用户: {user_data["username"]} ({user_data["real_name"]})'
|
|
)
|
|
)
|