diff --git a/meetings/migrations/0001_initial.py b/meetings/migrations/0001_initial.py deleted file mode 100644 index c0bfa71..0000000 --- a/meetings/migrations/0001_initial.py +++ /dev/null @@ -1,56 +0,0 @@ -# Generated by Django 5.2.8 on 2025-11-27 15:18 - -import meetings.models -import uuid -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='AdminWeeklyAvailability', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('availability_schedule', models.JSONField(default=dict, help_text='Dictionary with days as keys and lists of time slots as values')), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('updated_at', models.DateTimeField(auto_now=True)), - ], - options={ - 'verbose_name': 'Admin Weekly Availability', - 'verbose_name_plural': 'Admin Weekly Availability', - }, - ), - migrations.CreateModel( - name='AppointmentRequest', - fields=[ - ('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('first_name', meetings.models.EncryptedCharField(max_length=255)), - ('last_name', meetings.models.EncryptedCharField(max_length=255)), - ('email', meetings.models.EncryptedEmailField(max_length=254)), - ('phone', meetings.models.EncryptedCharField(blank=True, max_length=255)), - ('reason', meetings.models.EncryptedTextField(blank=True)), - ('preferred_dates', models.JSONField(help_text='List of preferred dates (YYYY-MM-DD format)')), - ('preferred_time_slots', models.JSONField(help_text='List of preferred time slots (morning/afternoon/evening)')), - ('status', models.CharField(choices=[('pending_review', 'Pending Review'), ('scheduled', 'Scheduled'), ('rejected', 'Rejected'), ('completed', 'Completed'), ('cancelled', 'Cancelled')], default='pending_review', max_length=20)), - ('scheduled_datetime', models.DateTimeField(blank=True, null=True)), - ('scheduled_duration', models.PositiveIntegerField(default=60, help_text='Duration in minutes')), - ('rejection_reason', meetings.models.EncryptedTextField(blank=True)), - ('jitsi_meet_url', models.URLField(blank=True, help_text='Jitsi Meet URL for the video session', null=True)), - ('jitsi_room_id', models.CharField(blank=True, help_text='Jitsi room ID', max_length=100, null=True, unique=True)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('updated_at', models.DateTimeField(auto_now=True)), - ], - options={ - 'verbose_name': 'Appointment Request', - 'verbose_name_plural': 'Appointment Requests', - 'ordering': ['-created_at'], - 'indexes': [models.Index(fields=['status', 'scheduled_datetime'], name='meetings_ap_status_4e4e26_idx'), models.Index(fields=['email', 'created_at'], name='meetings_ap_email_b8ed9d_idx')], - }, - ), - ] diff --git a/meetings/migrations/0002_alter_appointmentrequest_jitsi_room_id.py b/meetings/migrations/0002_alter_appointmentrequest_jitsi_room_id.py deleted file mode 100644 index 3b5060a..0000000 --- a/meetings/migrations/0002_alter_appointmentrequest_jitsi_room_id.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.8 on 2025-11-28 15:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_room_id', - field=models.CharField(blank=True, default=None, help_text='Jitsi room ID', max_length=100, null=True, unique=True), - ), - ] diff --git a/meetings/migrations/0003_appointmentrequest_jitsi_meeting_config_and_more.py b/meetings/migrations/0003_appointmentrequest_jitsi_meeting_config_and_more.py deleted file mode 100644 index 081cbe4..0000000 --- a/meetings/migrations/0003_appointmentrequest_jitsi_meeting_config_and_more.py +++ /dev/null @@ -1,77 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-01 16:22 - -import meetings.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0002_alter_appointmentrequest_jitsi_room_id'), - ] - - operations = [ - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_config', - field=models.JSONField(default=dict, help_text='Jitsi meeting configuration and settings'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_created', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_data', - field=models.JSONField(default=dict, help_text='Additional meeting data (participants, duration, etc)'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_password', - field=models.CharField(blank=True, max_length=100, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_participant_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_recording_url', - field=models.URLField(blank=True, help_text='URL to meeting recording', null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_duration_actual', - field=models.PositiveIntegerField(default=0, help_text='Actual meeting duration in minutes'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_ended_at', - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_started_at', - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_room_id', - field=models.CharField(blank=True, help_text='Jitsi room ID', max_length=100, null=True, unique=True), - ), - migrations.AddIndex( - model_name='appointmentrequest', - index=models.Index(fields=['jitsi_meeting_created', 'scheduled_datetime'], name='meetings_ap_jitsi_m_f3c488_idx'), - ), - migrations.AddIndex( - model_name='appointmentrequest', - index=models.Index(fields=['meeting_started_at'], name='meetings_ap_meeting_157142_idx'), - ), - ] diff --git a/meetings/migrations/0004_remove_appointmentrequest_meetings_ap_jitsi_m_f3c488_idx_and_more.py b/meetings/migrations/0004_remove_appointmentrequest_meetings_ap_jitsi_m_f3c488_idx_and_more.py deleted file mode 100644 index 4ec9658..0000000 --- a/meetings/migrations/0004_remove_appointmentrequest_meetings_ap_jitsi_m_f3c488_idx_and_more.py +++ /dev/null @@ -1,66 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-01 18:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0003_appointmentrequest_jitsi_meeting_config_and_more'), - ] - - operations = [ - migrations.RemoveIndex( - model_name='appointmentrequest', - name='meetings_ap_jitsi_m_f3c488_idx', - ), - migrations.RemoveIndex( - model_name='appointmentrequest', - name='meetings_ap_meeting_157142_idx', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_meeting_config', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_meeting_created', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_meeting_data', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_meeting_password', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_participant_token', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_recording_url', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='meeting_duration_actual', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='meeting_ended_at', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='meeting_started_at', - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_room_id', - field=models.CharField(blank=True, default=None, help_text='Jitsi room ID', max_length=100, null=True, unique=True), - ), - ] diff --git a/meetings/migrations/0005_appointmentrequest_jitsi_meeting_config_and_more.py b/meetings/migrations/0005_appointmentrequest_jitsi_meeting_config_and_more.py deleted file mode 100644 index 55987b3..0000000 --- a/meetings/migrations/0005_appointmentrequest_jitsi_meeting_config_and_more.py +++ /dev/null @@ -1,77 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-01 19:18 - -import meetings.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0004_remove_appointmentrequest_meetings_ap_jitsi_m_f3c488_idx_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_config', - field=models.JSONField(default=dict, help_text='Jitsi meeting configuration and settings'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_created', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_data', - field=models.JSONField(default=dict, help_text='Additional meeting data (participants, duration, etc)'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_meeting_password', - field=models.CharField(blank=True, max_length=100, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_participant_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_recording_url', - field=models.URLField(blank=True, help_text='URL to meeting recording', null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_duration_actual', - field=models.PositiveIntegerField(default=0, help_text='Actual meeting duration in minutes'), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_ended_at', - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='meeting_started_at', - field=models.DateTimeField(blank=True, null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_room_id', - field=models.CharField(blank=True, help_text='Jitsi room ID', max_length=100, null=True, unique=True), - ), - migrations.AddIndex( - model_name='appointmentrequest', - index=models.Index(fields=['jitsi_meeting_created', 'scheduled_datetime'], name='meetings_ap_jitsi_m_f3c488_idx'), - ), - migrations.AddIndex( - model_name='appointmentrequest', - index=models.Index(fields=['meeting_started_at'], name='meetings_ap_meeting_157142_idx'), - ), - ] diff --git a/meetings/migrations/0006_remove_appointmentrequest_jitsi_moderator_token_and_more.py b/meetings/migrations/0006_remove_appointmentrequest_jitsi_moderator_token_and_more.py deleted file mode 100644 index 15a631e..0000000 --- a/meetings/migrations/0006_remove_appointmentrequest_jitsi_moderator_token_and_more.py +++ /dev/null @@ -1,32 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-02 10:24 - -import meetings.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0005_appointmentrequest_jitsi_meeting_config_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - ), - migrations.RemoveField( - model_name='appointmentrequest', - name='jitsi_participant_token', - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_meet_url', - field=models.URLField(blank=True, help_text='Base Jitsi Meet URL (without tokens)', null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_recording_url', - field=meetings.models.EncryptedURLField(blank=True, help_text='URL to meeting recording', max_length=2000, null=True), - ), - ] diff --git a/meetings/migrations/0007_appointmentrequest_jitsi_moderator_token_and_more.py b/meetings/migrations/0007_appointmentrequest_jitsi_moderator_token_and_more.py deleted file mode 100644 index b38eefa..0000000 --- a/meetings/migrations/0007_appointmentrequest_jitsi_moderator_token_and_more.py +++ /dev/null @@ -1,34 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-02 10:41 - -import meetings.models -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0006_remove_appointmentrequest_jitsi_moderator_token_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AddField( - model_name='appointmentrequest', - name='jitsi_participant_token', - field=meetings.models.EncryptedTextField(blank=True, null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_meet_url', - field=models.URLField(blank=True, help_text='Jitsi Meet URL for the video session', null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_recording_url', - field=models.URLField(blank=True, help_text='URL to meeting recording', null=True), - ), - ] diff --git a/meetings/migrations/0008_alter_appointmentrequest_jitsi_moderator_token_and_more.py b/meetings/migrations/0008_alter_appointmentrequest_jitsi_moderator_token_and_more.py deleted file mode 100644 index 7cafc3b..0000000 --- a/meetings/migrations/0008_alter_appointmentrequest_jitsi_moderator_token_and_more.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-02 11:30 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0007_appointmentrequest_jitsi_moderator_token_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_moderator_token', - field=models.TextField(blank=True, null=True), - ), - migrations.AlterField( - model_name='appointmentrequest', - name='jitsi_participant_token', - field=models.TextField(blank=True, null=True), - ), - ] diff --git a/meetings/migrations/0009_appointmentrequest_is_admin_join.py b/meetings/migrations/0009_appointmentrequest_is_admin_join.py deleted file mode 100644 index 2211760..0000000 --- a/meetings/migrations/0009_appointmentrequest_is_admin_join.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated manually for is_admin_join field - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0008_alter_appointmentrequest_jitsi_moderator_token_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='appointmentrequest', - name='is_admin_join', - field=models.BooleanField( - default=False, - help_text='When True, participants are allowed to join the meeting. Admin must join first and set this to True.' - ), - ), - ] - diff --git a/meetings/migrations/0010_remove_appointmentrequest_is_admin_join.py b/meetings/migrations/0010_remove_appointmentrequest_is_admin_join.py deleted file mode 100644 index 7eb4019..0000000 --- a/meetings/migrations/0010_remove_appointmentrequest_is_admin_join.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-03 14:33 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0009_appointmentrequest_is_admin_join'), - ] - - operations = [ - migrations.RemoveField( - model_name='appointmentrequest', - name='is_admin_join', - ), - ] diff --git a/meetings/migrations/0011_appointmentrequest_selected_slots.py b/meetings/migrations/0011_appointmentrequest_selected_slots.py deleted file mode 100644 index f8902d1..0000000 --- a/meetings/migrations/0011_appointmentrequest_selected_slots.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.8 on 2025-12-03 15:28 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('meetings', '0010_remove_appointmentrequest_is_admin_join'), - ] - - operations = [ - migrations.AddField( - model_name='appointmentrequest', - name='selected_slots', - field=models.JSONField(default=list, help_text='Original selected slots with day and time slot pairs'), - ), - ] diff --git a/users/migrations/0001_initial.py b/users/migrations/0001_initial.py deleted file mode 100644 index 535ea17..0000000 --- a/users/migrations/0001_initial.py +++ /dev/null @@ -1,54 +0,0 @@ -# Generated by Django 5.2.8 on 2025-11-27 14:43 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('auth', '0012_alter_user_first_name_max_length'), - ] - - operations = [ - migrations.CreateModel( - name='CustomUser', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('password', models.CharField(max_length=128, verbose_name='password')), - ('email', models.EmailField(max_length=254, unique=True)), - ('first_name', models.CharField(max_length=50)), - ('last_name', models.CharField(max_length=50)), - ('is_staff', models.BooleanField(default=False)), - ('is_superuser', models.BooleanField(default=False)), - ('is_active', models.BooleanField(default=True)), - ('isVerified', models.BooleanField(default=False)), - ('verify_otp', models.CharField(blank=True, max_length=6, null=True)), - ('verify_otp_expiry', models.DateTimeField(blank=True, null=True)), - ('forgot_password_otp', models.CharField(blank=True, max_length=6, null=True)), - ('forgot_password_otp_expiry', models.DateTimeField(blank=True, null=True)), - ('phone_number', models.CharField(blank=True, max_length=20)), - ('last_login', models.DateTimeField(auto_now=True)), - ('date_joined', models.DateTimeField(auto_now_add=True)), - ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), - ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), - ], - options={ - 'abstract': False, - }, - ), - migrations.CreateModel( - name='UserProfile', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('bio', models.TextField(blank=True, max_length=500)), - ('timezone', models.CharField(default='UTC', max_length=50)), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('updated_at', models.DateTimeField(auto_now=True)), - ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL)), - ], - ), - ] diff --git a/users/migrations/0002_contactmessage.py b/users/migrations/0002_contactmessage.py deleted file mode 100644 index 8525ae5..0000000 --- a/users/migrations/0002_contactmessage.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 5.2.8 on 2025-11-28 15:37 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('users', '0001_initial'), - ] - - operations = [ - migrations.CreateModel( - name='ContactMessage', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=255)), - ('email', models.EmailField(max_length=254)), - ('phone', models.CharField(blank=True, max_length=20)), - ('message', models.TextField()), - ('created_at', models.DateTimeField(auto_now_add=True)), - ('is_read', models.BooleanField(default=False)), - ('is_responded', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'Contact Message', - 'verbose_name_plural': 'Contact Messages', - 'ordering': ['-created_at'], - }, - ), - ]