mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Statistics: Added a graph for revenue over time
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import datetime
|
||||
import json
|
||||
from decimal import Decimal
|
||||
|
||||
import dateutil.parser
|
||||
import dateutil.rrule
|
||||
from django.db.models import Count
|
||||
from django.db.models import Count, Sum
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from pretix.base.models import Item, Order, OrderPosition
|
||||
@@ -77,4 +78,24 @@ class IndexView(EventPermissionRequiredMixin, TemplateView):
|
||||
} for item, cnt in num_ordered.items()
|
||||
]
|
||||
|
||||
rev_by_day = {
|
||||
o['payment_date'].date(): o['sum']
|
||||
for o in
|
||||
Order.objects.current.filter(event=self.request.event, payment_date__isnull=False).values(
|
||||
'payment_date').annotate(sum=Sum('total'))
|
||||
}
|
||||
data = []
|
||||
total = 0
|
||||
for d in dateutil.rrule.rrule(
|
||||
dateutil.rrule.DAILY,
|
||||
dtstart=min(ordered_by_day.keys()),
|
||||
until=max(max(ordered_by_day.keys()), max(paid_by_day.keys()))):
|
||||
d = d.date()
|
||||
total += float(rev_by_day.get(d, 0))
|
||||
data.append({
|
||||
'date': d.strftime('%Y-%m-%d'),
|
||||
'revenue': round(total, 2),
|
||||
})
|
||||
ctx['rev_data'] = json.dumps(data)
|
||||
|
||||
return ctx
|
||||
|
||||
Reference in New Issue
Block a user