Fix metrics
This commit is contained in:
parent
4a3f7adbee
commit
ae82b26644
|
@ -1,37 +1,10 @@
|
|||
from django.http import HttpResponse
|
||||
from shiftregister.app.models import Helper, ShiftRegistration, Message, Shift
|
||||
from django.db.models import F, Count, Q, ExpressionWrapper, Case, When, Sum
|
||||
from shiftregister.app.models import Helper, ShiftRegistration, Message
|
||||
from django.db.models import Count, Case, When, Sum
|
||||
from django.db import models
|
||||
|
||||
|
||||
def metrics(request):
|
||||
help_wanted = Q(required_helpers__gt=F("reg_count")) | Q(required_helpers=0) & Q(
|
||||
room__required_helpers__gt=F("reg_count")
|
||||
)
|
||||
team_shifts = (
|
||||
Shift.with_reg_count()
|
||||
.annotate(team_count=Count("teambackup"))
|
||||
.filter(
|
||||
help_wanted,
|
||||
team_count__gt=0,
|
||||
deleted=False,
|
||||
)
|
||||
)
|
||||
|
||||
helping_helpers = Helper.objects.annotate(
|
||||
shift_count=Count(
|
||||
Case(
|
||||
When(
|
||||
shiftregistration__state__in=[
|
||||
ShiftRegistration.RegState.CHECKED_IN,
|
||||
],
|
||||
then=1,
|
||||
),
|
||||
output_field=models.IntegerField(),
|
||||
)
|
||||
)
|
||||
).filter(number_validated=True, shift_count__gte=1)
|
||||
|
||||
response = HttpResponse(
|
||||
"\n".join(
|
||||
(
|
||||
|
@ -42,24 +15,42 @@ def metrics(request):
|
|||
"helpers_confirmed_total",
|
||||
Helper.objects.filter(number_validated=True).count(),
|
||||
),
|
||||
("helpers_helped", helping_helpers.count()),
|
||||
(
|
||||
"worked_shifts",
|
||||
"helpers_helped_total",
|
||||
Helper.objects.annotate(
|
||||
shift_count=Count(
|
||||
Case(
|
||||
When(
|
||||
shiftregistration__state__in=[
|
||||
ShiftRegistration.RegState.CHECKED_IN
|
||||
],
|
||||
then=1,
|
||||
),
|
||||
output_field=models.IntegerField(),
|
||||
)
|
||||
)
|
||||
)
|
||||
.filter(number_validated=True, shift_count__gte=1)
|
||||
.count(),
|
||||
),
|
||||
(
|
||||
"worked_shifts_total",
|
||||
ShiftRegistration.objects.filter(
|
||||
state=ShiftRegistration.RegState.CHECKED_IN
|
||||
).count(),
|
||||
),
|
||||
(
|
||||
"messages_sent",
|
||||
"messages_sent_total",
|
||||
Message.objects.all().count(),
|
||||
),
|
||||
(
|
||||
"hours_worked",
|
||||
"worked_seconds_total",
|
||||
ShiftRegistration.objects.filter(
|
||||
state=ShiftRegistration.RegState.CHECKED_IN
|
||||
).aggregate(sum=Sum("shift__duration"))["sum"],
|
||||
)
|
||||
.aggregate(sum=Sum("shift__duration"))["sum"]
|
||||
.total_seconds(),
|
||||
),
|
||||
("team_shifts", team_shifts.count()),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue