Artifex/control_plane/projects/views.py
2026-08-15 13:50:24 +07:00

17 lines
772 B
Python

from __future__ import annotations
from django.shortcuts import render
from control_plane.events.models import Event
from control_plane.projects.models import Project, TaskStatus
def dashboard(request):
projects = Project.objects.order_by("name")
recent_events = Event.objects.select_related("project", "task").order_by("-created_at")[:25]
summary = {
"project_count": Project.objects.count(),
"ready_tasks": sum(project.tasks.filter(status=TaskStatus.READY).count() for project in projects),
"blocked_tasks": sum(project.tasks.filter(status=TaskStatus.BLOCKED).count() for project in projects),
}
return render(request, "projects/dashboard.html", {"projects": projects, "summary": summary, "recent_events": recent_events})