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.
 
 

104 lines
6.6 KiB

# Generated by Django 3.2.4 on 2025-10-13 17:24
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('course', '0007_alter_course_thumbnail'),
]
operations = [
migrations.CreateModel(
name='CourseLiveSession',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('subject', models.CharField(help_text='Topic of the live session.', max_length=255, verbose_name='Subject')),
('started_at', models.DateTimeField(help_text='Start time of the live session.', verbose_name='Started At')),
('ended_at', models.DateTimeField(blank=True, help_text='End time of the live session.', null=True, verbose_name='Ended At')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
('course', models.ForeignKey(help_text='Course that this live session belongs to.', on_delete=django.db.models.deletion.CASCADE, related_name='live_sessions', to='course.course', verbose_name='Course')),
],
options={
'verbose_name': 'Course Live Session',
'verbose_name_plural': 'Course Live Sessions',
'ordering': ('-started_at', '-id'),
},
),
migrations.CreateModel(
name='LiveSessionUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('role', models.CharField(choices=[('participant', 'Participant'), ('moderator', 'Moderator'), ('observer', 'Observer')], help_text='Role of the user in the session', max_length=50, verbose_name='Role')),
('entered_at', models.DateTimeField(help_text='Time the user entered the session', verbose_name='Entered At')),
('exited_at', models.DateTimeField(blank=True, default=None, help_text='Time the user exited the session', null=True, verbose_name='Exited At')),
('is_online', models.BooleanField(default=True, help_text='Is the user currently online?', verbose_name='Is online')),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created At')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated At')),
('session', models.ForeignKey(help_text='Live session that the user joined.', on_delete=django.db.models.deletion.CASCADE, related_name='user_sessions', to='course.courselivesession', verbose_name='Live Session')),
('user', models.ForeignKey(help_text='User participating in the live session.', on_delete=django.db.models.deletion.CASCADE, related_name='live_session_entries', to=settings.AUTH_USER_MODEL, verbose_name='User')),
],
options={
'verbose_name': 'User Session',
'verbose_name_plural': 'User Sessions',
'ordering': ('-entered_at', '-id'),
},
),
migrations.CreateModel(
name='LiveSessionRecording',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(help_text='Title of the recording', max_length=255, verbose_name='Title')),
('file', models.FileField(help_text='File of the recorded session', upload_to='recorded_sessions/', verbose_name='Recording File')),
('file_time', models.DurationField(blank=True, help_text='Duration of the recording file', null=True, verbose_name='File Duration')),
('recording_type', models.CharField(choices=[('voice', 'Voice'), ('video', 'Video')], help_text='Type of the recording (voice or video)', max_length=10, verbose_name='Recording Type')),
('thumbnail', models.ImageField(blank=True, help_text='Thumbnail image for video recordings', null=True, upload_to='recording_thumbnails/', verbose_name='Thumbnail')),
('created_at', models.DateTimeField(auto_now_add=True, help_text='Time the recording was created', verbose_name='Created At')),
('updated_at', models.DateTimeField(auto_now=True, help_text='The datetime when the recording was last updated', verbose_name='Updated At')),
('is_active', models.BooleanField(default=True, help_text='Whether this recording is active or not', verbose_name='Is Active')),
('session', models.ForeignKey(help_text='Live session that this recording belongs to.', on_delete=django.db.models.deletion.CASCADE, related_name='recordings', to='course.courselivesession', verbose_name='Live Session')),
],
options={
'verbose_name': 'Live Session Recording',
'verbose_name_plural': 'Live Session Recordings',
'ordering': ('-created_at', '-id'),
},
),
migrations.AddIndex(
model_name='livesessionuser',
index=models.Index(fields=['session', 'user'], name='course_live_session_b1eaa5_idx'),
),
migrations.AddIndex(
model_name='livesessionuser',
index=models.Index(fields=['session', 'is_online'], name='course_live_session_5ef9bc_idx'),
),
migrations.AddIndex(
model_name='livesessionuser',
index=models.Index(fields=['user', 'is_online'], name='course_live_user_id_384830_idx'),
),
migrations.AlterUniqueTogether(
name='livesessionuser',
unique_together={('session', 'user', 'entered_at')},
),
migrations.AddIndex(
model_name='livesessionrecording',
index=models.Index(fields=['session', 'is_active'], name='course_live_session_f35db0_idx'),
),
migrations.AddIndex(
model_name='livesessionrecording',
index=models.Index(fields=['session', 'recording_type'], name='course_live_session_84b2bf_idx'),
),
migrations.AddIndex(
model_name='courselivesession',
index=models.Index(fields=['course', 'started_at'], name='course_cour_course__b8968b_idx'),
),
migrations.AddIndex(
model_name='courselivesession',
index=models.Index(fields=['course', 'created_at'], name='course_cour_course__142085_idx'),
),
]