# Generated by Django 4.2.7 on 2025-09-14 20:10 from django.conf import settings import django.core.validators from django.db import migrations, models import django.db.models.deletion import uuid class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Email', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, unique=True)), ('subject', models.CharField(max_length=500)), ('from_email', models.EmailField(max_length=254)), ('to_emails', models.JSONField(default=list)), ('cc_emails', models.JSONField(default=list)), ('bcc_emails', models.JSONField(default=list)), ('reply_to', models.EmailField(blank=True, max_length=254, null=True)), ('body_text', models.TextField(blank=True)), ('body_html', models.TextField(blank=True)), ('message_id', models.CharField(blank=True, max_length=500, null=True, unique=True)), ('in_reply_to', models.CharField(blank=True, max_length=500, null=True)), ('references', models.TextField(blank=True)), ('priority', models.CharField(choices=[('low', 'Low'), ('normal', 'Normal'), ('high', 'High')], default='normal', max_length=10)), ('status', models.CharField(choices=[('draft', 'Draft'), ('sent', 'Sent'), ('received', 'Received'), ('failed', 'Failed')], default='draft', max_length=20)), ('is_read', models.BooleanField(default=False)), ('is_starred', models.BooleanField(default=False)), ('is_important', models.BooleanField(default=False)), ('is_encrypted', models.BooleanField(default=False)), ('sent_at', models.DateTimeField(blank=True, null=True)), ('received_at', models.DateTimeField(blank=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('size', models.BigIntegerField(default=0)), ], options={ 'db_table': 'emails', 'ordering': ['-created_at'], }, ), migrations.CreateModel( name='EmailThread', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('subject', models.CharField(max_length=500)), ('participants', models.JSONField(default=list)), ('last_activity', models.DateTimeField(auto_now=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('emails', models.ManyToManyField(related_name='threads', to='emails.email')), ], options={ 'db_table': 'email_threads', 'ordering': ['-last_activity'], }, ), migrations.CreateModel( name='EmailSignature', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('content_html', models.TextField()), ('content_text', models.TextField(blank=True)), ('is_default', models.BooleanField(default=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='email_signatures', to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'email_signatures', 'ordering': ['name'], }, ), migrations.CreateModel( name='EmailRule', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('is_active', models.BooleanField(default=True)), ('condition_field', models.CharField(max_length=50)), ('condition_operator', models.CharField(max_length=20)), ('condition_value', models.CharField(max_length=500)), ('action', models.CharField(choices=[('move', 'Move to folder'), ('mark_read', 'Mark as read'), ('mark_important', 'Mark as important'), ('forward', 'Forward to'), ('delete', 'Delete'), ('reply', 'Auto-reply')], max_length=20)), ('action_value', models.CharField(blank=True, max_length=500)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='email_rules', to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'email_rules', 'ordering': ['name'], }, ), migrations.CreateModel( name='EmailFolder', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('folder_type', models.CharField(choices=[('inbox', 'Inbox'), ('sent', 'Sent'), ('drafts', 'Drafts'), ('trash', 'Trash'), ('spam', 'Spam'), ('archive', 'Archive'), ('custom', 'Custom')], default='custom', max_length=20)), ('color', models.CharField(default='#007bff', max_length=7)), ('is_system', models.BooleanField(default=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='emails.emailfolder')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='folders', to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'email_folders', 'ordering': ['name'], 'unique_together': {('user', 'name')}, }, ), migrations.CreateModel( name='EmailAttachment', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('filename', models.CharField(max_length=255)), ('content_type', models.CharField(max_length=100)), ('size', models.BigIntegerField()), ('file', models.FileField(upload_to='email_attachments/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['pdf', 'doc', 'docx', 'txt', 'jpg', 'jpeg', 'png', 'gif', 'zip', 'rar'])])), ('is_inline', models.BooleanField(default=False)), ('content_id', models.CharField(blank=True, max_length=100)), ('created_at', models.DateTimeField(auto_now_add=True)), ('email', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='attachments', to='emails.email')), ], options={ 'db_table': 'email_attachments', 'ordering': ['filename'], }, ), migrations.AddField( model_name='email', name='folder', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='emails', to='emails.emailfolder'), ), migrations.AddField( model_name='email', name='user', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='emails', to=settings.AUTH_USER_MODEL), ), migrations.CreateModel( name='EmailTemplate', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('subject', models.CharField(max_length=500)), ('body_html', models.TextField()), ('body_text', models.TextField(blank=True)), ('is_public', models.BooleanField(default=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='email_templates', to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'email_templates', 'ordering': ['name'], 'unique_together': {('user', 'name')}, }, ), migrations.CreateModel( name='EmailSearch', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100)), ('query', models.JSONField()), ('created_at', models.DateTimeField(auto_now_add=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='email_searches', to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'email_searches', 'ordering': ['name'], 'unique_together': {('user', 'name')}, }, ), migrations.AddIndex( model_name='email', index=models.Index(fields=['user', 'folder', '-created_at'], name='emails_user_id_ceecc1_idx'), ), migrations.AddIndex( model_name='email', index=models.Index(fields=['user', 'is_read'], name='emails_user_id_005dbe_idx'), ), migrations.AddIndex( model_name='email', index=models.Index(fields=['user', 'is_starred'], name='emails_user_id_11204a_idx'), ), migrations.AddIndex( model_name='email', index=models.Index(fields=['message_id'], name='emails_message_7b58ef_idx'), ), ]