cloud-run-django-terraform/gametracker/views.py (39 lines of code) (raw):

from django.conf import settings from django.http import HttpResponse from django.shortcuts import render import os from .models import * def home(request, game_name=None): filtered_game = None context = {} if settings.DEBUG: context["debug"] = ( f'< DB_HOST="{settings.DATABASES["default"]["HOST"]}"' f'| PROXY="{os.environ.get("USE_CLOUD_SQL_AUTH_PROXY", "False")}"' f'| BUCKET="{settings.GS_BUCKET_NAME}" >' ) context["game_name"] = game_name context["games"] = Game.objects.all().order_by("name") if game_name: search = Game.objects.filter(name__iexact=game_name) if len(search) == 1: filtered_game = search.get() else: context["error"] = f"Invalid game: {game_name}" return render(request, "index.html", context) context["matches"] = Match.objects.filter(game=filtered_game).order_by( "-datetime" ) else: context["matches"] = Match.objects.all().order_by("-datetime") context["players"] = Player.objects.all().order_by("name") context["filtered_game"] = filtered_game winrates = [] for player in context["players"]: if filtered_game: rate = player.winning_matches.filter(game=filtered_game).count() / player.matches.filter(game=filtered_game).count() else: rate = player.winning_matches.count() / player.matches.count() winrates.append({"player": player.name, "rate": f"{rate * 100}%" }) context["winrates"] = winrates return render(request, "index.html", context)