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