forked from CGM_Public/pretix_original
Statistics: Removed extra() clause because it caused several problems
This commit is contained in:
@@ -30,7 +30,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
new Morris.Line({
|
new Morris.Area({
|
||||||
element: 'obd_chart',
|
element: 'obd_chart',
|
||||||
data: {{ obd_data|safe }},
|
data: {{ obd_data|safe }},
|
||||||
xkey: 'date',
|
xkey: 'date',
|
||||||
@@ -38,7 +38,9 @@
|
|||||||
labels: ['{% trans "Placed orders" %}', '{% trans "Paid orders" %}'],
|
labels: ['{% trans "Placed orders" %}', '{% trans "Paid orders" %}'],
|
||||||
lineColors: ['#000099', '#009900'],
|
lineColors: ['#000099', '#009900'],
|
||||||
smooth: false,
|
smooth: false,
|
||||||
resize: true
|
resize: true,
|
||||||
|
fillOpacity: 0.3,
|
||||||
|
behaveLikeLine: true
|
||||||
});
|
});
|
||||||
new Morris.Area({
|
new Morris.Area({
|
||||||
element: 'rev_chart',
|
element: 'rev_chart',
|
||||||
@@ -48,7 +50,7 @@
|
|||||||
labels: ['{% trans "Total revenue" %}'],
|
labels: ['{% trans "Total revenue" %}'],
|
||||||
smooth: false,
|
smooth: false,
|
||||||
resize: true,
|
resize: true,
|
||||||
fillOpacity: 0.5,
|
fillOpacity: 0.3,
|
||||||
preUnits: '{{ request.event.currency }} '
|
preUnits: '{{ request.event.currency }} '
|
||||||
});
|
});
|
||||||
new Morris.Bar({
|
new Morris.Bar({
|
||||||
|
|||||||
@@ -19,35 +19,24 @@ class IndexView(EventPermissionRequiredMixin, TemplateView):
|
|||||||
ctx = super().get_context_data(**kwargs)
|
ctx = super().get_context_data(**kwargs)
|
||||||
|
|
||||||
# Orders by day
|
# Orders by day
|
||||||
ordered_by_day = {
|
ordered_by_day = {}
|
||||||
# we receive different types depending on whether we are running on
|
for o in Order.objects.current.filter(event=self.request.event).values('datetime'):
|
||||||
# MySQL or SQLite
|
day = o['datetime'].date()
|
||||||
(
|
ordered_by_day[day] = ordered_by_day.get(day, 0) + 1
|
||||||
o['datetime']
|
paid_by_day = {}
|
||||||
if isinstance(o['datetime'], datetime.date)
|
for o in Order.objects.current.filter(event=self.request.event,
|
||||||
else dateutil.parser.parse(o['datetime']).date()
|
payment_date__isnull=False).values('payment_date'):
|
||||||
): o['count']
|
day = o['payment_date'].date()
|
||||||
for o in
|
paid_by_day[day] = paid_by_day.get(day, 0) + 1
|
||||||
Order.objects.current.filter(event=self.request.event).extra({'datetime': "date(datetime)"}).values(
|
|
||||||
'datetime').annotate(count=Count('id'))
|
|
||||||
}
|
|
||||||
paid_by_day = {
|
|
||||||
(
|
|
||||||
o['payment_date']
|
|
||||||
if isinstance(o['payment_date'], datetime.date)
|
|
||||||
else dateutil.parser.parse(o['payment_date']).date()
|
|
||||||
): o['count']
|
|
||||||
for o in
|
|
||||||
Order.objects.current.filter(event=self.request.event,
|
|
||||||
payment_date__isnull=False).extra(
|
|
||||||
{'payment_date': 'date(payment_date)'}
|
|
||||||
).values('payment_date').annotate(count=Count('id'))
|
|
||||||
}
|
|
||||||
data = []
|
data = []
|
||||||
for d in dateutil.rrule.rrule(
|
for d in dateutil.rrule.rrule(
|
||||||
dateutil.rrule.DAILY,
|
dateutil.rrule.DAILY,
|
||||||
dtstart=min(ordered_by_day.keys()),
|
dtstart=min(ordered_by_day.keys() if ordered_by_day else datetime.date.today()),
|
||||||
until=max(max(ordered_by_day.keys()), max(paid_by_day.keys()))):
|
until=max(
|
||||||
|
max(ordered_by_day.keys() if paid_by_day else [datetime.date.today()]),
|
||||||
|
max(paid_by_day.keys() if paid_by_day else [datetime.date(1970, 1, 1)])
|
||||||
|
)):
|
||||||
d = d.date()
|
d = d.date()
|
||||||
data.append({
|
data.append({
|
||||||
'date': d.strftime('%Y-%m-%d'),
|
'date': d.strftime('%Y-%m-%d'),
|
||||||
@@ -84,25 +73,19 @@ class IndexView(EventPermissionRequiredMixin, TemplateView):
|
|||||||
} for item, cnt in num_ordered.items()
|
} for item, cnt in num_ordered.items()
|
||||||
]
|
]
|
||||||
|
|
||||||
rev_by_day = {
|
rev_by_day = {}
|
||||||
(
|
for o in Order.objects.current.filter(event=self.request.event,
|
||||||
o['payment_date']
|
status=Order.STATUS_PAID,
|
||||||
if isinstance(o['payment_date'], datetime.date)
|
payment_date__isnull=False).values('payment_date', 'total'):
|
||||||
else dateutil.parser.parse(o['payment_date']).date()
|
day = o['payment_date'].date()
|
||||||
): o['sum']
|
rev_by_day[day] = rev_by_day.get(day, 0) + o['total']
|
||||||
for o in
|
|
||||||
Order.objects.current.filter(event=self.request.event,
|
|
||||||
status=Order.STATUS_PAID,
|
|
||||||
payment_date__isnull=False).extra(
|
|
||||||
{'payment_date': 'date(payment_date)'}
|
|
||||||
).values('payment_date').annotate(sum=Sum('total'))
|
|
||||||
}
|
|
||||||
data = []
|
data = []
|
||||||
total = 0
|
total = 0
|
||||||
for d in dateutil.rrule.rrule(
|
for d in dateutil.rrule.rrule(
|
||||||
dateutil.rrule.DAILY,
|
dateutil.rrule.DAILY,
|
||||||
dtstart=min(rev_by_day.keys()),
|
dtstart=min(rev_by_day.keys() if rev_by_day else [datetime.date.today()]),
|
||||||
until=max(rev_by_day.keys())):
|
until=max(rev_by_day.keys() if rev_by_day else [datetime.date.today()])):
|
||||||
d = d.date()
|
d = d.date()
|
||||||
total += float(rev_by_day.get(d, 0))
|
total += float(rev_by_day.get(d, 0))
|
||||||
data.append({
|
data.append({
|
||||||
|
|||||||
Reference in New Issue
Block a user