63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
from django.db.models import F, BooleanField, IntegerField, ExpressionWrapper, Count, Sum, DecimalField
|
|
from django.db.models.functions import Cast
|
|
from django.shortcuts import render
|
|
from django.views.generic import TemplateView
|
|
|
|
from bloonsa_game.models import Level
|
|
from settings.settings import DEBUG
|
|
from users.models import Player
|
|
from users.util import bloonsa_util, actions
|
|
|
|
|
|
class IndexView(TemplateView):
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return render(request, "bloonsa_game/index.html", context={})
|
|
|
|
class TermsView(TemplateView):
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
return render(request, "bloonsa_game/terms.html", context={})
|
|
|
|
class GameView(TemplateView):
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
# This init is for accounts made with 'createsuperuser' or originating from bloonsb
|
|
player = bloonsa_util.init_player(request=request)
|
|
total_levels = Level.objects.count()
|
|
|
|
if type(kwargs.get("pk")) is int:
|
|
level = Level.objects.get(level_id=kwargs["pk"])
|
|
if level:
|
|
bloonsa_util.log(player=player,
|
|
request=request,
|
|
action=actions.bloonsa_load_level_by_url,
|
|
note=level)
|
|
return render(request, "bloonsa_game/game.html", context={
|
|
"total_levels": total_levels,
|
|
"flashVars": level.get_flash_vars(seperator="&"),
|
|
})
|
|
|
|
r = render(request, "bloonsa_game/game.html",
|
|
context={"total_levels": total_levels,})
|
|
return r
|
|
|
|
|
|
|
|
class LeaderboardGlobalView(TemplateView):
|
|
def get(self, request, *args, **kwargs):
|
|
# Get top 100 best players
|
|
players = Player.objects.annotate(
|
|
clears=Count(F("bloonsa_level_scores__clear")),
|
|
golds=Count(F("bloonsa_level_scores__dart_glitch_ever"))
|
|
).annotate(
|
|
volforce=F("clears") + F("golds")
|
|
).order_by("-volforce")[:10]
|
|
|
|
r = render(request, "bloonsa_game/modules/leaderboard_global.html",
|
|
context={
|
|
"players": players
|
|
})
|
|
r["x-frame-options"] = "sameorigin"
|
|
return r
|