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
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'),
|
|
),
|
|
]
|