# Generated by Django 5.2.9 on 2026-01-19 15:56 import django.db.models.deletion import uuid from django.conf import settings from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ("core", "0001_initial"), ] operations = [ migrations.AddField( model_name="run", name="trigger_type", field=models.CharField( choices=[ ("manual", "Manual"), ("scheduled", "Scheduled"), ("api", "API"), ], default="manual", help_text="How this run was triggered", max_length=20, ), ), migrations.CreateModel( name="GlobalSettings", fields=[ ( "id", models.BigAutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "schedules_paused", models.BooleanField( default=False, help_text="Global pause for all scheduled script executions", ), ), ( "schedules_paused_at", models.DateTimeField( blank=True, help_text="When schedules were paused", null=True ), ), ("updated_at", models.DateTimeField(auto_now=True)), ( "schedules_paused_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to=settings.AUTH_USER_MODEL, ), ), ], options={ "verbose_name": "global settings", "verbose_name_plural": "global settings", "db_table": "global_settings", }, ), migrations.CreateModel( name="ScriptSchedule", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "run_mode", models.CharField( choices=[ ("manual", "Manual"), ("interval", "Interval"), ("daily", "Daily"), ], default="manual", max_length=20, ), ), ( "interval_minutes", models.PositiveIntegerField( blank=True, choices=[ (5, "Every 5 minutes"), (10, "Every 10 minutes"), (15, "Every 15 minutes"), (30, "Every 30 minutes"), (60, "Every hour"), (120, "Every 2 hours"), (360, "Every 6 hours"), (720, "Every 12 hours"), ], help_text="Interval in minutes (for interval mode)", null=True, ), ), ( "daily_times", models.JSONField( blank=True, default=list, help_text='List of times in HH:MM format, e.g., ["09:00", "18:00"]', ), ), ( "timezone", models.CharField( default="UTC", help_text="Timezone for daily schedules (e.g., 'America/New_York')", max_length=50, ), ), ( "is_active", models.BooleanField( default=True, help_text="Whether this schedule is active (can be paused without deleting)", ), ), ( "q_schedule_ids", models.JSONField( blank=True, default=list, help_text="django-q2 Schedule object IDs", ), ), ( "next_run", models.DateTimeField( blank=True, help_text="Cached next scheduled run time", null=True, ), ), ( "last_scheduled_run", models.DateTimeField( blank=True, help_text="When the schedule last triggered a run", null=True, ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ( "created_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="created_schedules", to=settings.AUTH_USER_MODEL, ), ), ( "script", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, related_name="schedule", to="core.script", ), ), ], options={ "verbose_name": "script schedule", "verbose_name_plural": "script schedules", "db_table": "script_schedules", }, ), migrations.CreateModel( name="ScheduleHistory", fields=[ ( "id", models.UUIDField( default=uuid.uuid4, editable=False, primary_key=True, serialize=False, ), ), ( "change_type", models.CharField( choices=[ ("created", "Created"), ("updated", "Updated"), ("enabled", "Enabled"), ("disabled", "Disabled"), ("deleted", "Deleted"), ], max_length=20, ), ), ( "previous_config", models.JSONField( blank=True, help_text="Previous schedule configuration", null=True, ), ), ( "new_config", models.JSONField( blank=True, help_text="New schedule configuration", null=True ), ), ("created_at", models.DateTimeField(auto_now_add=True)), ( "changed_by", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, ), ), ( "schedule", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="history", to="core.scriptschedule", ), ), ], options={ "verbose_name": "schedule history", "verbose_name_plural": "schedule history entries", "db_table": "schedule_history", "ordering": ["-created_at"], }, ), ]