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() class QuotaUpdateSerializer(serializers.Serializer): daily_seconds_limit = serializers.IntegerField(min_value=0) monthly_seconds_limit = serializers.IntegerField(min_value=0) 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=0, required=False, default=600) monthly_seconds_limit = serializers.IntegerField(min_value=0, 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)