Use aggregation for all_balance

This commit is contained in:
Velichko Karakostov 2021-08-31 14:36:24 +03:00
parent 53c35377c6
commit 39700082e1
No known key found for this signature in database
GPG Key ID: D4463EC61D69232E

View File

@ -5,10 +5,12 @@ from django.conf import settings
from users.models import User from users.models import User
import operator import operator
from upload.models import Media from upload.models import Media
from django.db.models import Sum
def homePage(request): def homePage(request):
iter_var = 0 iter_var = 0
all_balance = [] all_balance = 0
Cashier = False Cashier = False
Processor = False Processor = False
@ -29,19 +31,19 @@ def homePage(request):
userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, isCashier={Cashier}, isProcessor={Processor}, Balance = {userBalance}" userQR = f"Name = {request.user.username}, Date Joined = {request.user.date_joined.date()}, ID = {request.user.id}, isCashier={Cashier}, isProcessor={Processor}, Balance = {userBalance}"
else: else:
userQR=None userQR=None
a = Balance.objects.all()
for user in a: # Use aggregation that can be calculated in database (fast)
all_balance.append(user.balanceValue) all_balance = Balance.objects.all().aggregate(s=Sum("balanceValue"))['s']
print(f"{all_balance}") # print(f"{all_balance}")
limited_coins = settings.ALL_COINS - sum(all_balance)
limited_coins = settings.ALL_COINS - all_balance
context = { context = {
"isCashier": Cashier, "isCashier": Cashier,
"isProcessor": Processor, "isProcessor": Processor,
"userQR":userQR, "userQR":userQR,
"fullbalance": limited_coins, "fullbalance": limited_coins,
"currencyTotal": sum(all_balance), "currencyTotal": all_balance,
"userBalance": userBalance "userBalance": userBalance,
} }