From 0b0a79b7201f24aeccc07010bf59aa8ce89ffa9c Mon Sep 17 00:00:00 2001 From: Samuel Gaist <samuel.gaist@idiap.ch> Date: Thu, 24 Sep 2020 16:33:26 +0200 Subject: [PATCH] [statistics][templatetags] Add user accurate computation method This allows for correct numbers to be shown. --- .../templatetags/statistics_tags.py | 45 +++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/beat/web/statistics/templatetags/statistics_tags.py b/beat/web/statistics/templatetags/statistics_tags.py index 527962a37..f6846984b 100644 --- a/beat/web/statistics/templatetags/statistics_tags.py +++ b/beat/web/statistics/templatetags/statistics_tags.py @@ -27,16 +27,55 @@ from django import template +from django.contrib.auth.models import User -from ..views import calculate_totals +from ...algorithms.models import Algorithm +from ...attestations.models import Attestation +from ...backend.models import Environment +from ...backend.models import Queue +from ...backend.models import Worker +from ...databases.models import Database +from ...dataformats.models import DataFormat +from ...experiments.models import Experiment +from ...libraries.models import Library +from ...plotters.models import Plotter +from ...plotters.models import PlotterParameter +from ...reports.models import Report +from ...search.models import Search +from ...team.models import Team +from ...toolchains.models import Toolchain register = template.Library() +def calculate_totals(user): + """Caculates all totals required by the statistics display""" + + return dict( + users=User.objects.count(), + databases=Database.objects.for_user(user, True).count(), + environments=Environment.objects.for_user(user, True).count(), + queues=Queue.objects.count(), + workers=Worker.objects.count(), + experiments=Experiment.objects.for_user(user, True).count(), + toolchains=Toolchain.objects.for_user(user, True).count(), + algorithms=Algorithm.objects.for_user(user, True).count(), + libraries=Library.objects.for_user(user, True).count(), + dataformats=DataFormat.objects.for_user(user, True).count(), + teams=Team.objects.for_user(user, True).count(), + attestations=Attestation.objects.for_user(user, True).count(), + searches=Search.objects.for_user(user, True).count(), + reports=Report.objects.for_user(user, True).count(), + plotters=Plotter.objects.for_user(user, True).count(), + plotterparameters=PlotterParameter.objects.for_user(user, True).count(), + ) + + @register.inclusion_tag("statistics/panels/status.html", takes_context=True) def status(context, id): + request = context["request"] return { - "request": context["request"], + "user": request.user, "panel_id": id, - "totals": calculate_totals(), + "totals": calculate_totals(request.user), } -- GitLab