Skip to content
Snippets Groups Projects

Only allow tasks in a final state to have a finished date

Merged Erwan Rouchet requested to merge restrict-task-finished-final into release-1.7.1
4 files
+ 52
0
Compare changes
  • Side-by-side
  • Inline
Files
4
# Generated by Django 5.0.8 on 2025-01-07 10:11
from django.db import migrations, models
from arkindex.ponos.models import State
# Copy the FINAL_STATES here so that if we ever change them,
# Django will detect it and require a new migration
FINAL_STATES = (
State.Completed,
State.Failed,
State.Error,
State.Stopped,
State.Cancelled,
)
def clear_unexpected_finish_dates(apps, schema_editor):
Task = apps.get_model("ponos", "Task")
Task.objects.exclude(state__in=FINAL_STATES).exclude(finished=None).update(finished=None)
class Migration(migrations.Migration):
dependencies = [
("ponos", "0013_task_ttl"),
("process", "0046_workerrun_ttl"),
]
operations = [
migrations.RunPython(
clear_unexpected_finish_dates,
reverse_code=migrations.RunPython.noop,
elidable=True,
),
migrations.AddConstraint(
model_name="task",
constraint=models.CheckConstraint(
check=models.Q(finished=None) | models.Q(state__in=FINAL_STATES),
name="task_finished_requires_final_state",
violation_error_message="Only tasks in a final state can have a finish date set.",
),
),
]
Loading