PyRunner / core /migrations /0002_add_scheduling_models.py
Akoda35's picture
Upload 22 files
71d5253 verified
Raw
History Blame Contribute Delete
8.97 kB
# 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"],
},
),
]