模特库标签分页与全能创作收口:藏长视频、选择器分页

角色库导入打标签并支持筛选;模特库与全能创作角色/商品选择改为每页 20 条分页。临时限制成片 ≤60 秒,过滤对话里的超长时长选项,并收拢本地全能创作与后台用户相关修复。
This commit is contained in:
Azmat@qq.com
2026-09-21 16:24:37 +08:00
parent 690eb3d843
commit 0bd1db6bf9
48 changed files with 3386 additions and 896 deletions
+20 -6
View File
@@ -871,7 +871,12 @@ class AdminUserProvisioningTests(TestCase):
self.nc.force_authenticate(self.normal)
def _create(self, **overrides):
payload = {"username": "created-user", "password": "strong-pass-1", "initial_credits": "500"}
payload = {
"username": "creat1",
"display_name": "测试用户",
"password": "strong-pass-1",
"initial_credits": "500",
}
payload.update(overrides)
return self.ac.post("/api/admin/users/", payload, format="json")
@@ -882,7 +887,8 @@ class AdminUserProvisioningTests(TestCase):
self.assertFalse(r.data["wallet_shared"])
self.assertEqual(r.data["teams"], []) # 个人团队是钱包实现细节,不当「所属团队」露出
user = User.objects.get(username="created-user")
user = User.objects.get(username="creat1")
self.assertEqual(user.first_name, "测试用户")
team = Team.objects.get(owner=user)
self.assertTrue(team.is_personal)
self.assertEqual(team.credit_account.balance, Decimal("500"))
@@ -892,22 +898,30 @@ class AdminUserProvisioningTests(TestCase):
def test_created_user_can_login(self):
self._create()
r = APIClient().post("/api/auth/login/", {"username": "created-user", "password": "strong-pass-1"}, format="json")
r = APIClient().post("/api/auth/login/", {"username": "creat1", "password": "strong-pass-1"}, format="json")
self.assertEqual(r.status_code, 200)
def test_create_user_validation_and_permission(self):
self.assertEqual(self.nc.post("/api/admin/users/", {}, format="json").status_code, 403)
self.assertEqual(self._create(username="").status_code, 400)
self.assertEqual(self._create(display_name="").status_code, 400)
self.assertEqual(self._create(username="abc").status_code, 400) # 不足 6 位
self.assertEqual(self._create(username="abc-12").status_code, 400) # 含非法字符
self.assertEqual(self._create(username="abcdefg").status_code, 400) # 超过 6 位
self.assertEqual(self._create(password="short").status_code, 400)
self.assertEqual(self._create(initial_credits="-5").status_code, 400)
self.assertEqual(self._create(username="normal").status_code, 400) # 重名
self.assertEqual(User.objects.filter(username="created-user").count(), 0)
# 准备一个 6 位账号占用,验证重名(大小写不敏感)
User.objects.create_user(username="taken1", password="x")
self.assertEqual(self._create(username="taken1").status_code, 400)
self.assertEqual(self._create(username="TAKEN1").status_code, 400)
self.assertEqual(User.objects.filter(username="creat1").count(), 0)
def test_create_user_without_initial_credits(self):
r = self._create(initial_credits="")
self.assertEqual(r.status_code, 201)
self.assertEqual(r.data["balance"], "0.0000")
team = Team.objects.get(owner__username="created-user")
team = Team.objects.get(owner__username="creat1")
self.assertEqual(team.name, "测试用户")
self.assertFalse(CreditLedger.objects.filter(team=team).exists()) # 0 积分不落空流水
def test_adjust_user_credit(self):