Add metrics related to fallback assignments

pull/1/head
Luca 2 years ago
parent aef78ce251
commit c4e30c83a1

@ -2,6 +2,8 @@ from django.db import models
from django.db.models import Count, Case, F, When, Sum
from django.http import HttpResponse
from shiftregister.app.models import Helper, Room, Shift, ShiftRegistration, Message
from shiftregister.fallback.models import FallbackAssignment
from shiftregister.importer.models import Event
def metrics(request):
@ -14,6 +16,37 @@ def metrics(request):
(
f"shiftregister_{name} {value}"
for name, value in (
(
"fallback_shifts",
Event.objects.filter(
deleted=False, calendar__needs_fallback=True
).count(),
),
(
"fallback_shifts_assigned",
FallbackAssignment.objects.aggregate(
count=Count("shift", distinct=True)
)["count"],
),
(
"fallback_shifts_full",
Shift.with_reg_count()
.annotate(
real_required_helpers=Case(
When(
required_helpers=0, then=F("room__required_helpers")
),
default=F("required_helpers"),
),
fallbackassignment_count=Count("fallbackassignment"),
)
.filter(
deleted=False,
reg_count__gte=F("real_required_helpers"),
fallbackassignment_count__gt=0,
)
.count(),
),
("helpers_total", Helper.objects.count()),
(
"helpers_confirmed_total",

Loading…
Cancel
Save