@login_required
@require_GET
def get_project_status_counts(request):
current_url = request.headers.get("Hx-Current-Url")
current_url_queries = parse_qs(urlparse(current_url).query)
project_status_url_query = current_url_queries.get("project_status")
project_status_counts = dict(
Project.objects.all()
.values("status")
.annotate(
count=Count("status"),
)
.values_list(
"status",
"count",
)
)
status_counts = {
key: {
"name": display.replace(" and ", " & "),
"count": project_status_counts.get(key, 0),
"url": reverse_lazy("funds:projects:all") + "?project_status=" + key,
"is_active": True
if project_status_url_query and key in project_status_url_query
else False,
}
for key, display in get_project_status_choices()
}
return render(
request,
"funds/includes/status-block.html",
{
"status_counts": status_counts,
"type": _("Projects"),
},
)