批量创建用户

This commit is contained in:
2025-03-06 14:51:43 +08:00
parent ece9b4059e
commit 3ee6ae835a
2 changed files with 36 additions and 4 deletions

View File

@@ -1,10 +1,16 @@
import random
from typing import List from typing import List
from django.contrib.auth import authenticate, login, logout from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from ninja import Router from ninja import Router
from ninja.pagination import paginate, PageNumberPagination from ninja.pagination import paginate
from ninja.errors import HttpError from ninja.errors import HttpError
from .schemas import UserListSchema, UserRegistrationSchema, UserLoginSchema from .schemas import (
BatchUsersIn,
UserListSchema,
UserRegistrationSchema,
UserLoginSchema,
)
from .models import RoleChoices, User from .models import RoleChoices, User
from .decorators import super_required from .decorators import super_required
@@ -61,9 +67,29 @@ def list(request, username: str, role: str = None):
@router.post("/batch") @router.post("/batch")
@super_required @super_required
def batch_create(request): def batch_create(request, payload: BatchUsersIn):
# 批量创建账号 # 批量创建账号
pass prefix = "web"
user_list = []
usernames = []
for name in payload.names:
username = prefix + payload.classname + name
usernames.append(username)
digits = [str(random.randint(2, 9)) for _ in range(6)]
password = "".join(digits)
user_list.append(
User(
username=username,
password=password,
raw_password=password,
)
)
existing_users = User.objects.filter(username__in=usernames)
if existing_users.exists():
raise HttpError(400, "有些用户已经存在,创建失败")
User.objects.bulk_create(user_list)
@router.put("/active/{id}") @router.put("/active/{id}")

View File

@@ -1,3 +1,4 @@
from typing import List
from ninja import Schema, ModelSchema from ninja import Schema, ModelSchema
from pydantic import EmailStr, Field from pydantic import EmailStr, Field
@@ -40,3 +41,8 @@ class UserRegistrationSchema(Schema):
class UserLoginSchema(Schema): class UserLoginSchema(Schema):
username: str username: str
password: str password: str
class BatchUsersIn(Schema):
names: List[str]
classname: str