from django.conf import settings from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Notification', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(max_length=255)), ('message', models.TextField()), ('notification_type', models.CharField( choices=[ ('event', 'Event'), ('promo', 'Promotion'), ('system', 'System'), ('booking', 'Booking'), ], default='system', max_length=20, )), ('is_read', models.BooleanField(default=False)), ('action_url', models.URLField(blank=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('user', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='notifications', to=settings.AUTH_USER_MODEL, )), ], options={'ordering': ['-created_at']}, ), migrations.CreateModel( name='NotificationSchedule', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('notification_type', models.CharField( choices=[('events_expiring_this_week', 'Events Expiring This Week')], db_index=True, max_length=64, )), ('cron_expression', models.CharField( default='0 0 * * 1', help_text=( 'Standard 5-field cron (minute hour dom month dow). ' 'Evaluated in Asia/Kolkata.' ), max_length=100, )), ('is_active', models.BooleanField(db_index=True, default=True)), ('last_run_at', models.DateTimeField(blank=True, null=True)), ('last_status', models.CharField(blank=True, default='', max_length=20)), ('last_error', models.TextField(blank=True, default='')), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={'ordering': ['-created_at']}, ), migrations.AddIndex( model_name='notificationschedule', index=models.Index( fields=['is_active', 'notification_type'], name='notificatio_is_acti_26dfb5_idx', ), ), migrations.CreateModel( name='NotificationRecipient', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('email', models.EmailField(max_length=254)), ('display_name', models.CharField(blank=True, default='', max_length=200)), ('is_active', models.BooleanField(default=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('schedule', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='recipients', to='notifications.notificationschedule', )), ], options={ 'ordering': ['display_name', 'email'], 'unique_together': {('schedule', 'email')}, }, ), ]