🔥 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
-22
@@ -10,7 +10,7 @@ from django.shortcuts import redirect, render
|
||||
from django.urls import reverse
|
||||
|
||||
from main.forms import DepositForm, OrderForm, OrderLineForm
|
||||
from main.models import Order, OrderLine, Product, Transaction
|
||||
from main.models import OrderLine, Product
|
||||
from main.utils import users_format_js, users_with_perm
|
||||
|
||||
|
||||
@@ -158,24 +158,3 @@ def deposit(request):
|
||||
form = DepositForm()
|
||||
|
||||
return render(request, "deposit.html", locals())
|
||||
|
||||
|
||||
def log(request, limit=datetime.now() - timedelta(days=2)):
|
||||
if limit:
|
||||
# display last two days of orders and transactions
|
||||
orders = Order.objects.filter(created__gte=limit).order_by("-created")
|
||||
transactions = Transaction.objects.filter(created__gte=limit).order_by("-created")
|
||||
|
||||
# no action in the last two days?
|
||||
# ...then display the last 5 items
|
||||
if len(orders) == 0:
|
||||
orders = Order.objects.all().order_by("-created")[:5]
|
||||
|
||||
if len(transactions) == 0:
|
||||
transactions = Transaction.objects.all().order_by("-created")[:5]
|
||||
else:
|
||||
# display everything
|
||||
orders = Order.objects.all().order_by("-created")
|
||||
transactions = Transaction.objects.all().order_by("-created")
|
||||
|
||||
return render(request, "log.html", locals())
|
||||
+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