Fixed broken grouping

This commit is contained in:
Raphael Michel
2015-09-09 10:56:41 +02:00
parent 79410cdb0d
commit 7b179f3ea5

View File

@@ -21,6 +21,7 @@ def tuplesum(tuples):
def mysum(it): def mysum(it):
sit = [i for i in it if not isinstance(i, Dontsum)] sit = [i for i in it if not isinstance(i, Dontsum)]
return sum(sit) return sum(sit)
return tuple(map(mysum, zip(*list(tuples)))) return tuple(map(mysum, zip(*list(tuples))))
@@ -33,23 +34,24 @@ def order_overview(event):
num_total = { num_total = {
(p['item'], p['variation']): (p['cnt'], p['price']) (p['item'], p['variation']): (p['cnt'], p['price'])
for p in for p in (OrderPosition.objects.current
OrderPosition.objects.current.filter(order__event=event).values('item', 'variation').annotate( .filter(order__event=event)
cnt=Count('id'), price=Sum('price')) .values('item', 'variation')
.annotate(cnt=Count('id'), price=Sum('price')).order_by())
} }
num_cancelled = { num_cancelled = {
(p['item'], p['variation']): (p['cnt'], p['price']) (p['item'], p['variation']): (p['cnt'], p['price'])
for p in (OrderPosition.objects.current for p in (OrderPosition.objects.current
.filter(order__event=event, order__status=Order.STATUS_CANCELLED) .filter(order__event=event, order__status=Order.STATUS_CANCELLED)
.values('item', 'variation') .values('item', 'variation')
.annotate(cnt=Count('id'), price=Sum('price'))) .annotate(cnt=Count('id'), price=Sum('price')).order_by())
} }
num_refunded = { num_refunded = {
(p['item'], p['variation']): (p['cnt'], p['price']) (p['item'], p['variation']): (p['cnt'], p['price'])
for p in (OrderPosition.objects.current for p in (OrderPosition.objects.current
.filter(order__event=event, order__status=Order.STATUS_REFUNDED) .filter(order__event=event, order__status=Order.STATUS_REFUNDED)
.values('item', 'variation') .values('item', 'variation')
.annotate(cnt=Count('id'), price=Sum('price'))) .annotate(cnt=Count('id'), price=Sum('price')).order_by())
} }
num_pending = { num_pending = {
(p['item'], p['variation']): (p['cnt'], p['price']) (p['item'], p['variation']): (p['cnt'], p['price'])
@@ -57,14 +59,14 @@ def order_overview(event):
.filter(order__event=event, .filter(order__event=event,
order__status__in=(Order.STATUS_PENDING, Order.STATUS_EXPIRED)) order__status__in=(Order.STATUS_PENDING, Order.STATUS_EXPIRED))
.values('item', 'variation') .values('item', 'variation')
.annotate(cnt=Count('id'), price=Sum('price'))) .annotate(cnt=Count('id'), price=Sum('price')).order_by())
} }
num_paid = { num_paid = {
(p['item'], p['variation']): (p['cnt'], p['price']) (p['item'], p['variation']): (p['cnt'], p['price'])
for p in (OrderPosition.objects.current for p in (OrderPosition.objects.current
.filter(order__event=event, order__status=Order.STATUS_PAID) .filter(order__event=event, order__status=Order.STATUS_PAID)
.values('item', 'variation') .values('item', 'variation')
.annotate(cnt=Count('id'), price=Sum('price'))) .annotate(cnt=Count('id'), price=Sum('price')).order_by())
} }
for item in items: for item in items:
@@ -111,37 +113,38 @@ def order_overview(event):
payment_items = [] payment_items = []
num_total = { num_total = {
o['payment_provider']: (o['cnt'], o['payment_fee']) o['payment_provider']: (o['cnt'], o['payment_fee'])
for o in for o in (Order.objects.current
Order.objects.current.filter(event=event).values('payment_provider').annotate( .filter(event=event)
cnt=Count('id'), payment_fee=Sum('payment_fee')) .values('payment_provider')
.annotate(cnt=Count('id'), payment_fee=Sum('payment_fee')).order_by())
} }
num_cancelled = { num_cancelled = {
o['payment_provider']: (o['cnt'], o['payment_fee']) o['payment_provider']: (o['cnt'], o['payment_fee'])
for o in (Order.objects.current for o in (Order.objects.current
.filter(event=event, status=Order.STATUS_CANCELLED) .filter(event=event, status=Order.STATUS_CANCELLED)
.values('payment_provider') .values('payment_provider')
.annotate(cnt=Count('id'), payment_fee=Sum('payment_fee'))) .annotate(cnt=Count('id'), payment_fee=Sum('payment_fee')).order_by())
} }
num_refunded = { num_refunded = {
o['payment_provider']: (o['cnt'], o['payment_fee']) o['payment_provider']: (o['cnt'], o['payment_fee'])
for o in (Order.objects.current for o in (Order.objects.current
.filter(event=event, status=Order.STATUS_REFUNDED) .filter(event=event, status=Order.STATUS_REFUNDED)
.values('payment_provider') .values('payment_provider')
.annotate(cnt=Count('id'), payment_fee=Sum('payment_fee'))) .annotate(cnt=Count('id'), payment_fee=Sum('payment_fee')).order_by())
} }
num_pending = { num_pending = {
o['payment_provider']: (o['cnt'], o['payment_fee']) o['payment_provider']: (o['cnt'], o['payment_fee'])
for o in (Order.objects.current for o in (Order.objects.current
.filter(event=event, status__in=(Order.STATUS_PENDING, Order.STATUS_EXPIRED)) .filter(event=event, status__in=(Order.STATUS_PENDING, Order.STATUS_EXPIRED))
.values('payment_provider') .values('payment_provider')
.annotate(cnt=Count('id'), payment_fee=Sum('payment_fee'))) .annotate(cnt=Count('id'), payment_fee=Sum('payment_fee')).order_by())
} }
num_paid = { num_paid = {
o['payment_provider']: (o['cnt'], o['payment_fee']) o['payment_provider']: (o['cnt'], o['payment_fee'])
for o in (Order.objects.current for o in (Order.objects.current
.filter(event=event, status=Order.STATUS_PAID) .filter(event=event, status=Order.STATUS_PAID)
.values('payment_provider') .values('payment_provider')
.annotate(cnt=Count('id'), payment_fee=Sum('payment_fee'))) .annotate(cnt=Count('id'), payment_fee=Sum('payment_fee')).order_by())
} }
provider_names = {} provider_names = {}