Calculate average for last five working days

remotes/origin/logger
David Barragán Merino 2015-11-12 10:22:55 +01:00
parent 463f5af330
commit 6073a66333
1 changed files with 40 additions and 15 deletions

View File

@ -15,7 +15,9 @@
from django.apps import apps
from django.db.models import Count
from django.db.models import Q
from django.utils import timezone
from datetime import timedelta
from collections import OrderedDict
@ -25,17 +27,23 @@ def get_users_stats():
queryset = model.objects.filter(is_active=True, is_system=False)
stats = OrderedDict()
# Total
stats["total"] = queryset.count()
# Average last 7 days
today = timezone.now()
seven_days_ago = today-timedelta(days=7)
stats["average_last_seven_days"] = (queryset.filter(date_joined__range=(seven_days_ago, today))
yesterday = today - timedelta(days=1)
seven_days_ago = yesterday - timedelta(days=7)
a_year_ago = today - timedelta(days=365)
stats["total"] = queryset.count()
stats["today"] = queryset.filter(date_joined__year=today.year,
date_joined__month=today.month,
date_joined__day=today.day).count()
stats["average_last_seven_days"] = (queryset.filter(date_joined__range=(seven_days_ago, yesterday))
.count()) / 7
stats["average_last_five_working_days"] = (queryset.filter(date_joined__range=(seven_days_ago, yesterday))
.exclude(Q(date_joined__week_day=1) |
Q(date_joined__week_day=7))
.count()) / 5
# Graph: users last year
a_year_ago = timezone.now() - timedelta(days=365)
# increments ->
# SELECT date_trunc('week', "filtered_users"."date_joined") AS "week",
# count(*)
@ -68,12 +76,20 @@ def get_projects_stats():
queryset = model.objects.all()
stats = OrderedDict()
stats["total"] = queryset.count()
today = timezone.now()
seven_days_ago = today-timedelta(days=7)
stats["average_last_seven_days"] = (queryset.filter(created_date__range=(seven_days_ago, today))
yesterday = today - timedelta(days=1)
seven_days_ago = yesterday - timedelta(days=7)
stats["total"] = queryset.count()
stats["today"] = queryset.filter(created_date__year=today.year,
created_date__month=today.month,
created_date__day=today.day).count()
stats["average_last_seven_days"] = (queryset.filter(created_date__range=(seven_days_ago, yesterday))
.count()) / 7
stats["average_last_five_working_days"] = (queryset.filter(created_date__range=(seven_days_ago, yesterday))
.exclude(Q(created_date__week_day=1) |
Q(created_date__week_day=7))
.count()) / 5
stats["total_with_backlog"] = (queryset.filter(is_backlog_activated=True,
is_kanban_activated=False)
@ -98,10 +114,19 @@ def get_user_stories_stats():
queryset = model.objects.all()
stats = OrderedDict()
stats["total"] = queryset.count()
today = timezone.now()
seven_days_ago = today-timedelta(days=7)
stats["average_last_seven_days"] = (queryset.filter(created_date__range=(seven_days_ago, today))
yesterday = today - timedelta(days=1)
seven_days_ago = yesterday - timedelta(days=7)
stats["total"] = queryset.count()
stats["today"] = queryset.filter(created_date__year=today.year,
created_date__month=today.month,
created_date__day=today.day).count()
stats["average_last_seven_days"] = (queryset.filter(created_date__range=(seven_days_ago, yesterday))
.count()) / 7
stats["average_last_five_working_days"] = (queryset.filter(created_date__range=(seven_days_ago, yesterday))
.exclude(Q(created_date__week_day=1) |
Q(created_date__week_day=7))
.count()) / 5
return stats