From d554961dd13cb7d8734d295a2aa5ec5913b2fd01 Mon Sep 17 00:00:00 2001 From: Danhia Date: Sat, 19 Mar 2022 20:38:52 +0100 Subject: [PATCH] added API for events data --- src/api/urls.py | 1 + src/api/views.py | 31 ++++++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/api/urls.py b/src/api/urls.py index 2a5ad61..5c1ae76 100644 --- a/src/api/urls.py +++ b/src/api/urls.py @@ -3,4 +3,5 @@ from . import views urlpatterns = [ path('bot/discord', views.discord_bot, name='discord_bot'), + path('events/', views.events_data, name='events_data'), ] diff --git a/src/api/views.py b/src/api/views.py index 4e15d74..1a5fe45 100644 --- a/src/api/views.py +++ b/src/api/views.py @@ -2,6 +2,8 @@ from django.shortcuts import render from accounts.models import UserProfileInfo from django.http import JsonResponse import os +from events.models import Event, Team, EventPlayer +from django.shortcuts import get_object_or_404 # Create your views here. @@ -24,4 +26,31 @@ def discord_bot(request): data[user.discord_id] = rank rank += 1 - return JsonResponse(data) \ No newline at end of file + return JsonResponse(data) + +def events_data(request, event_slug): + if request.method != 'GET': + return JsonResponse({'error':'bad request'}) + + event_info = get_object_or_404(Event, slug=event_slug) + + if event_info.password and request.GET.get('password') != event_info.password: + return JsonResponse({'error':'not authorized'}) + + players = EventPlayer.objects.filter(event=event_info) + + data = {} + if event_info.team_size > 1: + for player in players: + if not player.team: + continue + if not player.team.name in data: + data[player.team.name] = [] + data[player.team.name].append({"name": player.user.username, "score": player.score}) + else: + for player in players: + data[player.user.username] = player.score + + return JsonResponse(data) + + \ No newline at end of file