Use aggregation for all_balance
This commit is contained in:
parent
53c35377c6
commit
39700082e1
@ -5,18 +5,20 @@ from django.conf import settings
|
||||
from users.models import User
|
||||
import operator
|
||||
from upload.models import Media
|
||||
from django.db.models import Sum
|
||||
|
||||
|
||||
def homePage(request):
|
||||
iter_var = 0
|
||||
all_balance = []
|
||||
all_balance = 0
|
||||
Cashier = False
|
||||
Processor = False
|
||||
|
||||
|
||||
|
||||
balObject = Balance.objects.filter(user=request.user.id)
|
||||
userBalance = balObject.values("balanceValue")
|
||||
try:
|
||||
userBalance = userBalance[0]['balanceValue']
|
||||
userBalance = userBalance[0]['balanceValue']
|
||||
except IndexError:
|
||||
userBalance = None
|
||||
if request.user.groups.filter(name='Cashier').exists():
|
||||
@ -29,24 +31,24 @@ 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}"
|
||||
else:
|
||||
userQR=None
|
||||
a = Balance.objects.all()
|
||||
|
||||
for user in a:
|
||||
all_balance.append(user.balanceValue)
|
||||
print(f"{all_balance}")
|
||||
limited_coins = settings.ALL_COINS - sum(all_balance)
|
||||
# Use aggregation that can be calculated in database (fast)
|
||||
all_balance = Balance.objects.all().aggregate(s=Sum("balanceValue"))['s']
|
||||
# print(f"{all_balance}")
|
||||
|
||||
limited_coins = settings.ALL_COINS - all_balance
|
||||
context = {
|
||||
"isCashier": Cashier,
|
||||
"isProcessor": Processor,
|
||||
"userQR":userQR,
|
||||
"fullbalance": limited_coins,
|
||||
"currencyTotal": sum(all_balance),
|
||||
"userBalance": userBalance
|
||||
"currencyTotal": all_balance,
|
||||
"userBalance": userBalance,
|
||||
}
|
||||
|
||||
|
||||
|
||||
return render(request, "home.html", context)
|
||||
|
||||
|
||||
|
||||
def leaderboard(request):
|
||||
users = User.objects.all()
|
||||
@ -55,22 +57,22 @@ def leaderboard(request):
|
||||
try:
|
||||
username = i.username
|
||||
balance = i.balance.balanceValue
|
||||
# add media counter and other stuff
|
||||
# add media counter and other stuff
|
||||
if f"{username}" in leaderboard.keys():
|
||||
leaderboard[username] = balance + leaderboard[username]
|
||||
else:
|
||||
leaderboard[username] = balance
|
||||
leaderboard[username] = balance
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
|
||||
leaderboard = dict(sorted(leaderboard.items(), key=operator.itemgetter(0)))
|
||||
leaderboard = dict(reversed(list(leaderboard.items())))
|
||||
|
||||
while len(leaderboard) > 5:
|
||||
leaderboard.pop()
|
||||
|
||||
|
||||
media = Media.objects.all()
|
||||
|
||||
media = Media.objects.all()
|
||||
user_media = {}
|
||||
for i in media:
|
||||
username = i.user.username
|
||||
@ -78,7 +80,7 @@ def leaderboard(request):
|
||||
user_media[username] += 1
|
||||
else:
|
||||
user_media[username] = 1
|
||||
|
||||
|
||||
user_media = dict(sorted(user_media.items(), key=operator.itemgetter(0)))
|
||||
user_media = dict(reversed(list(user_media.items())))
|
||||
print(user_media)
|
||||
@ -92,7 +94,7 @@ def leaderboard(request):
|
||||
else:
|
||||
user_data = {i:{"Images":len(iter_user_media.filter(is_video=False))}}
|
||||
print(user_data)
|
||||
|
||||
|
||||
while len(user_media) > 5:
|
||||
user_media.pop()
|
||||
|
||||
@ -103,8 +105,8 @@ def leaderboard(request):
|
||||
# if f"{username}" in media_count.values():
|
||||
# media_count[username] = image + media_count[username].value
|
||||
# else:
|
||||
# media_count[username] = image
|
||||
|
||||
# media_count[username] = image
|
||||
|
||||
# print(media_count)
|
||||
|
||||
context = {
|
||||
@ -113,4 +115,4 @@ def leaderboard(request):
|
||||
}
|
||||
|
||||
return render(request, 'leaderboard.html', context)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user