This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
Files
reValuate/reValuate/home/views.py
2021-09-10 19:28:50 +03:00

127 lines
3.7 KiB
Python

from django.shortcuts import render
import os.path
from users.models import Balance
from django.conf import settings
from users.models import User
import operator
from upload.models import Media
import requests
from django.db.models import Sum
def homePage(request):
iter_var = 0
all_balance = 0
Cashier = False
Processor = False
balObject = Balance.objects.filter(user=request.user.id)
userBalance = balObject.values("balanceValue")
try:
userBalance = userBalance[0]['balanceValue']
except IndexError:
userBalance = None
if request.user.groups.filter(name='Cashier').exists():
Cashier = True
elif request.user.groups.filter(name='Processor').exists():
Processor = True
else:
pass
if request.user.is_authenticated:
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
# Use aggregation that can be calculated in database (fast)
all_balance = Balance.objects.all().aggregate(s=Sum("balanceValue"))['s']
# print(f"{all_balance}")
try:
limited_coins = settings.ALL_COINS - all_balance
except TypeError:
limited_coins = settings.ALL_COINS
github = requests.get("https://api.github.com/user/36108495").json()
context = {
"isCashier": Cashier,
"isProcessor": Processor,
"userQR":userQR,
"fullbalance": limited_coins,
"currencyTotal": all_balance,
"userBalance": userBalance,
"github": f"https://github.com/podput",
}
return render(request, "home.html", context)
def leaderboard(request):
users = User.objects.all()
leaderboard = {}
for i in users:
try:
username = i.username
balance = i.balance.balanceValue
# add media counter and other stuff
if f"{username}" in leaderboard.keys():
leaderboard[username] = balance + leaderboard[username]
else:
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()
user_media = {}
for i in media:
username = i.user.username
if f"{username}" in user_media.keys():
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())))
users = {}
for i in user_media.keys():
iter_user = User.objects.get(username=i)
iter_user_media = Media.objects.filter(user=iter_user)
if iter_user_media.filter(is_video=True):
user_data = {i:{"Videos":len(iter_user_media.filter(is_video=True)),
"Images":len(iter_user_media.filter(is_video=False))}}
else:
user_data = {i:{"Images":len(iter_user_media.filter(is_video=False))}}
while len(user_media) > 5:
user_media.pop()
# for i in media:
# username = i.user.username
# image = i.image
# if f"{username}" in media_count.values():
# media_count[username] = image + media_count[username].value
# else:
# media_count[username] = image
# print(media_count)
context = {
"leaderboard":leaderboard,
"user_media":user_media
}
return render(request, 'leaderboard.html', context)
def about(request):
return render(request, "about.html")