+
+
+@permission_required('club.schedule_view')
+def receipt(request):
+ email = request.POST.get('email')
+ try:
+ year = int(request.POST.get('year'))
+ except:
+ return HttpResponse('no content')
+
+ receipt = models.PayUOrder.generate_receipt(email, year)
+ if receipt:
+ content, optout, payments = receipt
+ else:
+ return HttpResponse('no content')
+ return HttpResponse(
+ content,
+ headers={
+ "Content-Type": "application/pdf",
+ "Content-Disposition": f'attachment; filename="wolnelektury-{year}-{email}.pdf"',
+ }
+ )
+
+
+@permission_required('club.schedule_view')
+def stats(request):
+ 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
+
+ days = []
+ d = today
+ while d >= start:
+ days.append((d.isoformat(), acq.get(d, {})))
+ d -= timedelta(1)
+
+ return render(request, 'club/stats.html',
+ {'days': days})
+