|
|
|
@ -9,7 +9,10 @@ from apps.course.models import ( |
|
|
|
CourseAttachment, |
|
|
|
Attachment, |
|
|
|
CourseGlossary, |
|
|
|
Glossary |
|
|
|
Glossary, |
|
|
|
CourseLiveSession, |
|
|
|
LiveSessionUser, |
|
|
|
LiveSessionRecording |
|
|
|
) |
|
|
|
from apps.account.models import ProfessorUser |
|
|
|
|
|
|
|
@ -376,3 +379,44 @@ class AdminCourseGlossarySerializer(serializers.Serializer): |
|
|
|
glossary.save() |
|
|
|
|
|
|
|
return instance |
|
|
|
|
|
|
|
|
|
|
|
class AdminLiveSessionUserSerializer(serializers.ModelSerializer): |
|
|
|
user_name = serializers.CharField(source='user.fullname', read_only=True) |
|
|
|
user_email = serializers.CharField(source='user.email', read_only=True) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = LiveSessionUser |
|
|
|
fields = ['id', 'session', 'user', 'user_name', 'user_email', 'role', 'entered_at', 'exited_at', 'is_online'] |
|
|
|
|
|
|
|
|
|
|
|
class AdminLiveSessionRecordingSerializer(serializers.ModelSerializer): |
|
|
|
file = FileFieldSerializer(required=False, allow_null=True) |
|
|
|
thumbnail = FileFieldSerializer(required=False, allow_null=True) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = LiveSessionRecording |
|
|
|
fields = ['id', 'session', 'title', 'file', 'file_time', 'recording_type', 'thumbnail', 'is_active', 'created_at'] |
|
|
|
|
|
|
|
|
|
|
|
class AdminLiveSessionListSerializer(serializers.ModelSerializer): |
|
|
|
course_title = serializers.CharField(source='course.title', read_only=True) |
|
|
|
participant_count = serializers.SerializerMethodField() |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = CourseLiveSession |
|
|
|
fields = ['id', 'course', 'course_title', 'room_id', 'subject', 'started_at', 'ended_at', 'participant_count', 'created_at'] |
|
|
|
|
|
|
|
def get_participant_count(self, obj): |
|
|
|
return obj.user_sessions.count() |
|
|
|
|
|
|
|
|
|
|
|
class AdminLiveSessionDetailSerializer(serializers.ModelSerializer): |
|
|
|
course_title = serializers.CharField(source='course.title', read_only=True) |
|
|
|
user_sessions = AdminLiveSessionUserSerializer(many=True, read_only=True) |
|
|
|
recordings = AdminLiveSessionRecordingSerializer(many=True, read_only=True) |
|
|
|
recorded_file = FileFieldSerializer(required=False, allow_null=True) |
|
|
|
|
|
|
|
class Meta: |
|
|
|
model = CourseLiveSession |
|
|
|
fields = ['id', 'course', 'course_title', 'room_id', 'subject', 'started_at', 'ended_at', 'recorded_file', 'user_sessions', 'recordings', 'created_at', 'updated_at'] |