33 lines
1.4 KiB
Python
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}"))
|