All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 2m20s
v0.9.5 — 账号安全管控 + 内容资产页: - 首次登录强制改密(must_change_password + ForceChangePasswordModal) - 并发会话限制(ActiveSession + SessionJWT认证,可配置桌面/移动端会话数) - Token生命周期缩短(access 30min, refresh 1天) - 登录IP记录(LoginRecord模型,为异常检测打基础) - 内容资产页(超管三级折叠/团队管两级折叠,按需懒加载) v0.9.6 — UI修缮: - 侧栏导航排序(内容资产移到用户管理下方) - 视频网格高度调整(440px,3行+暗示可滚动) - 秒数单位统一(不再换算为分钟/小时) - 提示词标签溢出修复 + 弹窗方向自适应 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
77 lines
3.3 KiB
Python
77 lines
3.3 KiB
Python
from rest_framework import serializers
|
|
|
|
|
|
class VideoGenerateSerializer(serializers.Serializer):
|
|
prompt = serializers.CharField(required=False, allow_blank=True, default='')
|
|
mode = serializers.ChoiceField(choices=['universal', 'keyframe'])
|
|
model = serializers.ChoiceField(choices=['seedance_2.0', 'seedance_2.0_fast'])
|
|
aspect_ratio = serializers.CharField(max_length=10)
|
|
duration = serializers.IntegerField()
|
|
references = serializers.ListField(child=serializers.DictField(), required=False, default=list)
|
|
|
|
|
|
class QuotaUpdateSerializer(serializers.Serializer):
|
|
daily_seconds_limit = serializers.IntegerField(min_value=-1)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=-1)
|
|
|
|
|
|
class UserStatusSerializer(serializers.Serializer):
|
|
is_active = serializers.BooleanField()
|
|
|
|
|
|
class AdminCreateUserSerializer(serializers.Serializer):
|
|
username = serializers.CharField(max_length=150)
|
|
email = serializers.EmailField()
|
|
password = serializers.CharField(min_length=6)
|
|
daily_seconds_limit = serializers.IntegerField(min_value=-1, required=False, default=600)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=-1, required=False, default=6000)
|
|
is_staff = serializers.BooleanField(required=False, default=False)
|
|
|
|
|
|
class SystemSettingsSerializer(serializers.Serializer):
|
|
default_daily_seconds_limit = serializers.IntegerField(min_value=0)
|
|
default_monthly_seconds_limit = serializers.IntegerField(min_value=0)
|
|
announcement = serializers.CharField(required=False, allow_blank=True, default='')
|
|
announcement_enabled = serializers.BooleanField(required=False, default=False)
|
|
max_desktop_sessions = serializers.IntegerField(min_value=1, required=False, default=1)
|
|
max_mobile_sessions = serializers.IntegerField(min_value=0, required=False, default=0)
|
|
|
|
|
|
# ── Team serializers ──
|
|
|
|
class TeamCreateSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=100)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=0, required=False, default=6000)
|
|
daily_member_limit_default = serializers.IntegerField(min_value=0, required=False, default=600)
|
|
|
|
|
|
class TeamUpdateSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=100, required=False)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=0, required=False)
|
|
daily_member_limit_default = serializers.IntegerField(min_value=0, required=False)
|
|
is_active = serializers.BooleanField(required=False)
|
|
|
|
|
|
class TeamTopUpSerializer(serializers.Serializer):
|
|
seconds = serializers.IntegerField(min_value=1)
|
|
|
|
|
|
class TeamAdminCreateSerializer(serializers.Serializer):
|
|
"""Create a team admin account for a specific team."""
|
|
username = serializers.CharField(max_length=150)
|
|
email = serializers.EmailField()
|
|
password = serializers.CharField(min_length=6)
|
|
|
|
|
|
class TeamMemberCreateSerializer(serializers.Serializer):
|
|
"""Team admin creates a member."""
|
|
username = serializers.CharField(max_length=150)
|
|
password = serializers.CharField(min_length=6)
|
|
daily_seconds_limit = serializers.IntegerField(min_value=-1, required=False)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=-1, required=False)
|
|
|
|
|
|
class MemberQuotaSerializer(serializers.Serializer):
|
|
daily_seconds_limit = serializers.IntegerField(min_value=-1)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=-1)
|