# Generated by Django 5.2.9 on 2026-01-05 13:50 import django.db.models.deletion from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name="NotificationPreference", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "channel_preferences", models.JSONField( blank=True, default=dict, help_text="Preferences per channel (email, push, in_app, sms)" ), ), ( "workflow_preferences", models.JSONField(blank=True, default=dict, help_text="Preferences per notification workflow"), ), ( "frequency_settings", models.JSONField(blank=True, default=dict, help_text="Digest and frequency settings"), ), ("is_opted_out", models.BooleanField(default=False)), ("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="novu_notification_prefs", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Notification Preference", "verbose_name_plural": "Notification Preferences", }, ), migrations.CreateModel( name="Subscriber", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("novu_subscriber_id", models.CharField(db_index=True, max_length=255, unique=True)), ("first_name", models.CharField(blank=True, max_length=100)), ("last_name", models.CharField(blank=True, max_length=100)), ("email", models.EmailField(blank=True, max_length=254)), ("phone", models.CharField(blank=True, max_length=20)), ("avatar", models.URLField(blank=True)), ("locale", models.CharField(default="en", max_length=10)), ("data", models.JSONField(blank=True, default=dict, help_text="Custom subscriber data")), ("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="notification_subscriber", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Notification Subscriber", "verbose_name_plural": "Notification Subscribers", }, ), migrations.CreateModel( name="SystemAnnouncement", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("title", models.CharField(max_length=255)), ("message", models.TextField()), ( "severity", models.CharField( choices=[("info", "Information"), ("warning", "Warning"), ("critical", "Critical")], default="info", max_length=20, ), ), ("action_url", models.URLField(blank=True)), ("is_active", models.BooleanField(default=True)), ("created_at", models.DateTimeField(auto_now_add=True)), ("expires_at", models.DateTimeField(blank=True, null=True)), ( "created_by", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="announcements_created", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "System Announcement", "verbose_name_plural": "System Announcements", "ordering": ["-created_at"], }, ), migrations.CreateModel( name="NotificationLog", fields=[ ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("workflow_id", models.CharField(db_index=True, max_length=100)), ("notification_type", models.CharField(max_length=50)), ("channel", models.CharField(max_length=20)), ( "status", models.CharField( choices=[ ("pending", "Pending"), ("sent", "Sent"), ("delivered", "Delivered"), ("failed", "Failed"), ], default="pending", max_length=20, ), ), ("payload", models.JSONField(blank=True, default=dict)), ("error_message", models.TextField(blank=True)), ("novu_transaction_id", models.CharField(blank=True, db_index=True, max_length=255)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "user", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="notification_logs", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "Notification Log", "verbose_name_plural": "Notification Logs", "ordering": ["-created_at"], "indexes": [ models.Index(fields=["user", "-created_at"], name="notificatio_user_id_57d53d_idx"), models.Index(fields=["workflow_id", "-created_at"], name="notificatio_workflo_e1a025_idx"), ], }, ), ]