You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
from rest_framework import serializers
|
|
from utils import FileFieldSerializer
|
|
|
|
|
|
class OnlineClassTokenCreateSerializer(serializers.Serializer):
|
|
redirect_path = serializers.CharField(required=False)
|
|
|
|
def validate_redirect_path(self, value: str) -> str:
|
|
value = value.strip()
|
|
if value and value.startswith("http"):
|
|
raise serializers.ValidationError("Redirect path must be relative to the frontend domain.")
|
|
return value
|
|
|
|
|
|
class OnlineClassTokenVerifySerializer(serializers.Serializer):
|
|
token = serializers.CharField(max_length=128)
|
|
|
|
def validate_token(self, value: str) -> str:
|
|
value = value.strip()
|
|
if not value:
|
|
raise serializers.ValidationError("Token is required.")
|
|
return value
|
|
|
|
|
|
class LiveSessionRoomCreateSerializer(serializers.Serializer):
|
|
room_id = serializers.CharField(required=False, max_length=255, allow_blank=True)
|
|
subject = serializers.CharField(required=False, max_length=255, allow_blank=True)
|
|
|
|
def validate_room_id(self, value: str) -> str:
|
|
return value.strip()
|
|
|
|
def validate_subject(self, value: str) -> str:
|
|
return value.strip()
|
|
|
|
|
|
class LiveSessionTokenSerializer(serializers.Serializer):
|
|
course_slug = serializers.CharField(max_length=255)
|
|
|
|
def validate_course_slug(self, value: str) -> str:
|
|
value = value.strip()
|
|
if not value:
|
|
raise serializers.ValidationError("course_slug is required.")
|
|
return value
|
|
|
|
|
|
class LiveSessionRecordedFileSerializer(serializers.Serializer):
|
|
recorded_file = serializers.FileField(required=True)
|
|
|
|
def validate_recorded_file(self, value):
|
|
if not value:
|
|
raise serializers.ValidationError("recorded_file is required.")
|
|
return value
|
|
|
|
|
|
class LiveSessionRecordingSerializer(serializers.Serializer):
|
|
file = FileFieldSerializer(required=True)
|
|
title = serializers.CharField(required=False, max_length=255, allow_blank=True)
|
|
recording_type = serializers.ChoiceField(choices=['voice', 'video'], required=False, default='video')
|
|
file_time = serializers.DurationField(required=False, allow_null=True)
|
|
|
|
def validate_file(self, value):
|
|
if not value:
|
|
raise serializers.ValidationError("file is required.")
|
|
return value
|
|
|
|
def validate_title(self, value):
|
|
return value.strip() if value else None
|