Files
proc-rota/djangorota/rota/management/commands/run_rota.py
T
Ross 40135a282d .
2025-12-09 12:36:18 +00:00

33 lines
1.4 KiB
Python

from django.core.management.base import BaseCommand, CommandError
from rota.models import RotaSchedule
from rota.services import run_rota_async
class Command(BaseCommand):
help = "Create a RotaRun for the given RotaSchedule id and start it in background."
def add_arguments(self, parser):
parser.add_argument("rota_id", type=int)
parser.add_argument("--external", action="store_true", help="Use external generator hook if available")
parser.add_argument("--no-export", action="store_true", help="Do not generate HTML export for this run")
parser.add_argument("--no-solve", action="store_true", help="Do not run solver when generating export")
def handle(self, *args, **options):
rota_id = options["rota_id"]
use_external = options.get("external", False)
try:
rota = RotaSchedule.objects.get(pk=rota_id)
except RotaSchedule.DoesNotExist:
raise CommandError(f"RotaSchedule with id={rota_id} not found")
no_export = options.get("no_export", False)
no_solve = options.get("no_solve", False)
run = run_rota_async(
rota.id,
use_external_generator=use_external,
generate_builder=not no_export,
builder_solve=not no_solve,
)
self.stdout.write(self.style.SUCCESS(f"Started RotaRun id={run.id} for rota={rota.name}"))