Add per-room shift count metrics

pull/1/head
Luca 2 years ago
parent ad52a9b9fe
commit d5137f78f1

@ -1,7 +1,7 @@
from django.db import models from django.db import models
from django.db.models import Count, Case, F, When, Sum from django.db.models import Count, Case, F, When, Sum
from django.http import HttpResponse from django.http import HttpResponse
from shiftregister.app.models import Helper, Shift, ShiftRegistration, Message from shiftregister.app.models import Helper, Room, Shift, ShiftRegistration, Message
def metrics(request): def metrics(request):
@ -82,6 +82,44 @@ def metrics(request):
) )
).count(), ).count(),
), ),
*(
(
f'shifts{{room="{room.name}"}}',
Shift.objects.filter(deleted=False, room=room).count(),
)
for room in Room.objects.all()
),
*(
(
f'shifts_occupied{{room="{room.name}"}}',
Shift.with_reg_count()
.filter(deleted=False, reg_count__gte=1, room=room)
.count(),
)
for room in Room.objects.all()
),
*(
(
f'shifts_full{{room="{room.name}"}}',
Shift.with_reg_count()
.annotate(
real_required_helpers=Case(
When(
required_helpers=0,
then=F("room__required_helpers"),
),
default=F("required_helpers"),
)
)
.filter(
deleted=False,
reg_count__gte=F("real_required_helpers"),
room=room,
)
.count(),
)
for room in Room.objects.all()
),
( (
"worked_seconds_total", "worked_seconds_total",
worked_seconds_total.total_seconds() worked_seconds_total.total_seconds()

Loading…
Cancel
Save