profile: add: game history
This commit is contained in:
@ -1,27 +0,0 @@
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import permissions, status
|
||||
|
||||
from django.http import HttpRequest
|
||||
|
||||
from .models import GameMembersModel, GameModel
|
||||
from .serializers import GameSerializer
|
||||
|
||||
from . import config
|
||||
|
||||
class GameHistoryView(APIView):
|
||||
|
||||
permission_classes = (permissions.AllowAny,)
|
||||
|
||||
def get(self, request: HttpRequest, pk: int = None):
|
||||
|
||||
member_game_model_list: list[GameMembersModel] = GameMembersModel.objects.filter(player_id = pk)
|
||||
|
||||
game_model_list: list[GameModel] = []
|
||||
|
||||
for member_game_model in member_game_model_list:
|
||||
game_model_list.append(GameModel.objects.get(pk = member_game_model.game_id))
|
||||
|
||||
games_data: list[dict] = [GameSerializer(game_model).data for game_model in game_model_list]
|
||||
|
||||
return Response(games_data)
|
28
games/GameHistoryViewSet.py
Normal file
28
games/GameHistoryViewSet.py
Normal file
@ -0,0 +1,28 @@
|
||||
from rest_framework.viewsets import ViewSet
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import permissions
|
||||
|
||||
from django.http import HttpRequest
|
||||
from django.contrib.auth.models import User
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from .models import GameMembersModel, GameModel
|
||||
from .serializers import GameSerializer
|
||||
|
||||
class GameHistoryView(ViewSet):
|
||||
|
||||
queryset = User.objects.all()
|
||||
serializer_class = GameSerializer
|
||||
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
|
||||
|
||||
def retrive(self, request: HttpRequest, pk: int = None):
|
||||
|
||||
user: User = get_object_or_404(User, pk=pk)
|
||||
|
||||
member_game_model_list: list[GameMembersModel] = GameMembersModel.objects.filter(player=user)
|
||||
|
||||
game_model_list: list[GameModel] = [member_game_model.game for member_game_model in member_game_model_list]
|
||||
|
||||
games_data: list[dict] = self.serializer_class(game_model_list, many=True).data
|
||||
|
||||
return Response(games_data)
|
@ -3,11 +3,11 @@ from django.conf import settings
|
||||
from django.conf.urls.static import static
|
||||
|
||||
from .GameViewSet import GameViewSet
|
||||
from .GameHistoryView import GameHistoryView
|
||||
from .GameHistoryViewSet import GameHistoryView
|
||||
from .GameConfigView import GameConfigView
|
||||
|
||||
urlpatterns = [
|
||||
path("<int:pk>", GameViewSet.as_view({"get": "retrieve"}), name="game_page"),
|
||||
path("history/<int:pk>", GameHistoryView.as_view(), name="history_page"),
|
||||
path("history/<int:pk>", GameHistoryView.as_view({"get": "retrive"}), name="history_page"),
|
||||
path("", GameConfigView.as_view(), name = "game_config")
|
||||
]
|
Reference in New Issue
Block a user