PyRunner / core /views /runs.py
Akoda35's picture
Upload 18 files
1f6c983 verified
Raw
History Blame Contribute Delete
1.45 kB
"""
Run views for the control panel.
"""
from django.shortcuts import render, get_object_or_404
from django.contrib.auth.decorators import login_required
from django.http import HttpRequest, HttpResponse
from core.models import Run, Script
@login_required
def run_list_view(request: HttpRequest) -> HttpResponse:
"""List all runs with optional filtering."""
runs = Run.objects.select_related("script", "triggered_by").order_by("-created_at")
# Optional filtering by status
status_filter = request.GET.get("status")
if status_filter and status_filter in dict(Run.Status.choices):
runs = runs.filter(status=status_filter)
# Optional filtering by script
script_filter = request.GET.get("script")
if script_filter:
runs = runs.filter(script_id=script_filter)
# Get all scripts for filter dropdown
scripts = Script.objects.all().order_by("name")
return render(request, "cpanel/runs/list.html", {
"runs": runs,
"status_choices": Run.Status.choices,
"status_filter": status_filter,
"script_filter": script_filter,
"scripts": scripts,
})
@login_required
def run_detail_view(request: HttpRequest, pk) -> HttpResponse:
"""View run details including output."""
run = get_object_or_404(
Run.objects.select_related("script", "triggered_by"),
pk=pk
)
return render(request, "cpanel/runs/detail.html", {"run": run})