Files
GNX-mailEnterprise/emails/migrations/0001_initial.py
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

202 lines
10 KiB
Python

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