🔥 Remove stat and log views
➖ Remove djangorestframework
This commit is contained in:
1 parent
d7513f389e
commit
7ba3ead688
13 files changed
+67
-609
No files matched your search
+1
-88
@@ -1,96 +1,9 @@
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
from itertools import groupby
|
||||
|
||||
from django.http import JsonResponse
|
||||
from django.shortcuts import render
|
||||
from django.utils import timezone
|
||||
from django.views.generic import View
|
||||
|
||||
from main.models import Order, OrderLine, Product
|
||||
|
||||
|
||||
def stats_list(request):
|
||||
products = Product.objects.filter(active=True)
|
||||
order_groups = ["hourly", "daily", "monthly", "yearly"]
|
||||
|
||||
return render(request, "stats.html", {"products": products, "order_groups": order_groups})
|
||||
|
||||
|
||||
class OrdersView(View):
|
||||
grouping = "orders"
|
||||
|
||||
def get_range(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def get_key(self, order):
|
||||
raise NotImplementedError
|
||||
|
||||
def group_by(self, orders):
|
||||
orders_grouped = dict([(key, 0) for key in self.get_range()]) # init
|
||||
for key, values in groupby(orders, key=self.get_key):
|
||||
count = len(list(values))
|
||||
orders_grouped[key] += count
|
||||
|
||||
return orders_grouped
|
||||
|
||||
def get(self, request):
|
||||
orders = Order.objects.all()
|
||||
if not orders.exists():
|
||||
return JsonResponse({})
|
||||
|
||||
orders_grouped = self.group_by(orders)
|
||||
data = {
|
||||
"start": str(orders[0].created),
|
||||
"orders": [[k, v] for k, v in orders_grouped.items()],
|
||||
"total": sum(orders_grouped.values()),
|
||||
"grouping": self.grouping,
|
||||
}
|
||||
return JsonResponse(data)
|
||||
|
||||
|
||||
class OrdersHourlyView(OrdersView):
|
||||
grouping = "hourly"
|
||||
|
||||
def get_range(self):
|
||||
return range(0, 24)
|
||||
|
||||
def get_key(self, order):
|
||||
return order.created.hour
|
||||
|
||||
|
||||
class OrdersDailyView(OrdersView):
|
||||
grouping = "daily"
|
||||
|
||||
def get_range(self):
|
||||
return range(0, 7)
|
||||
|
||||
def get_key(self, order):
|
||||
return order.created.weekday()
|
||||
|
||||
|
||||
class OrdersMonthlyView(OrdersView):
|
||||
grouping = "monthly"
|
||||
|
||||
def get_range(self):
|
||||
return range(1, 13)
|
||||
|
||||
def get_key(self, order):
|
||||
return order.created.month
|
||||
|
||||
|
||||
class OrdersYearlyView(OrdersView):
|
||||
grouping = "yearly"
|
||||
|
||||
def get_range(self):
|
||||
first = Order.objects.order_by("created").first()
|
||||
last = timezone.now().year
|
||||
first = first.created.year if first else last
|
||||
|
||||
return range(first, last + 1)
|
||||
|
||||
def get_key(self, order):
|
||||
return order.created.year
|
||||
from main.models import OrderLine
|
||||
|
||||
|
||||
def stats_products_realtime(request):
|
||||
|
||||
Reference in new issue
Block a user