52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
from rest_framework.views import APIView
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from .models import GameHistory, Stats
|
|
from .serializers import GameHistorySerializer, StatsSerializer
|
|
from rest_framework.response import Response
|
|
from rest_framework import status
|
|
from django.db.models import Q
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
class AddGameHistoryView(APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def post(self, request):
|
|
serializer = GameHistorySerializer(data=request.data)
|
|
if serializer.is_valid():
|
|
serializer.save()
|
|
print("serilizer post: ",serializer.data)
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
class GameHistoryView(APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request, username):
|
|
try:
|
|
user = username
|
|
games = GameHistory.objects.filter(Q(player_1_id=user) | Q(player_2_id=user)).order_by('-date_played')[:10]
|
|
serializer = GameHistorySerializer(games, many=True)
|
|
print("serilizer get: ",serializer.data)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
except Exception as e:
|
|
return Response(
|
|
{'message': f"{type(e).__name__}: {str(e)}"},
|
|
status=status.HTTP_404_NOT_FOUND
|
|
)
|
|
|
|
class StatsView(APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request, username):
|
|
try:
|
|
user = username
|
|
stats = Stats.objects.filter(player_id=user).first()
|
|
if stats is None:
|
|
return Response([], status=status.HTTP_200_OK)
|
|
serializer = StatsSerializer(stats)
|
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
|
except Exception as e:
|
|
return Response(
|
|
{'message': f"{type(e).__name__}: {str(e)}"},
|
|
status=status.HTTP_404_NOT_FOUND
|
|
) |