X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/bdc6fa5714330f27916756fd9a0dfbe9d14954df..95db9a686ba5be5d07936dfc1178ccd7da3d2818:/src/club/views.py diff --git a/src/club/views.py b/src/club/views.py index 503a431e4..3f283af15 100644 --- a/src/club/views.py +++ b/src/club/views.py @@ -1,6 +1,7 @@ # This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # +from datetime import date, timedelta from django.conf import settings from django.contrib.auth.decorators import login_required, permission_required from django.db.models import Sum @@ -285,3 +286,37 @@ def receipt(request): } ) + +@permission_required('club.schedule_view') +def stats(request): + maxes = {} + acq = {} + today = date.today() + start = today - timedelta(365) + for schedule in models.Schedule.objects.filter( + payed_at__gte=start, + ): + d = schedule.payed_at.date() + m = schedule.method.replace('-', '_') + acq.setdefault(d, {}) + acq[d].setdefault(m, 0) + acq[d][m] += schedule.amount + + for a in acq.values(): + for m, v in a.items(): + maxes.setdefault(m, 0) + if v > maxes[m]: + maxes[m] = v + + days = [] + d = today + while d >= start: + a = acq.get(d, {}) + for k, v in a.items(): + a[k] = (v, 100 * v/(maxes[k] or 1)) + days.append((d.isoformat(), a)) + d -= timedelta(1) + + return render(request, 'club/stats.html', + {'days': days}) +