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}"))