diff --git a/shiftregister/metrics/views.py b/shiftregister/metrics/views.py index 92166ec..c8dba3a 100644 --- a/shiftregister/metrics/views.py +++ b/shiftregister/metrics/views.py @@ -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()), ) ) )