Initializing the GameEvent endpoint
This commit is contained in:
@@ -3,7 +3,7 @@ from rest_framework.response import Response
|
|||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
|
||||||
from game.models import Game
|
from game.models import Game
|
||||||
from ..serializers import GameSerializer
|
from ..serializers import GameSerializer, GameEventSerializer
|
||||||
|
|
||||||
|
|
||||||
class GameResource(APIView):
|
class GameResource(APIView):
|
||||||
@@ -28,3 +28,19 @@ class GameSingleResource(APIView):
|
|||||||
|
|
||||||
serializer = GameSerializer(game)
|
serializer = GameSerializer(game)
|
||||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class GameEventResource(APIView):
|
||||||
|
def post(self, request, game_id):
|
||||||
|
""" Creates a new event """
|
||||||
|
|
||||||
|
try:
|
||||||
|
Game.objects.get(pk=game_id)
|
||||||
|
except Game.DoesNotExist:
|
||||||
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
|
serializer = GameEventSerializer(data=request.data)
|
||||||
|
if serializer.is_valid():
|
||||||
|
serializer.save()
|
||||||
|
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
||||||
|
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from .game import GameSerializer
|
from .game import GameSerializer, GameEventSerializer
|
||||||
|
|
||||||
|
|
||||||
__all__ = ["GameSerializer"]
|
__all__ = ["GameSerializer", "GameEventSerializer"]
|
||||||
|
|||||||
@@ -1,9 +1,15 @@
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from game.models import Game
|
from game.models import Game, GameEvent
|
||||||
|
|
||||||
|
|
||||||
class GameSerializer(serializers.ModelSerializer):
|
class GameSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Game
|
model = Game
|
||||||
fields = "__all__"
|
fields = "__all__"
|
||||||
|
|
||||||
|
|
||||||
|
class GameEventSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = GameEvent
|
||||||
|
fields = "__all__"
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from .resources.main import MainResource
|
from .resources.main import MainResource
|
||||||
from .resources.game import GameResource, GameSingleResource
|
from .resources.game import GameResource, GameSingleResource, GameEventResource
|
||||||
|
|
||||||
|
|
||||||
app_name = "api"
|
app_name = "api"
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path("games/<game_id>/events", GameEventResource.as_view(), name="games_events"),
|
||||||
path("games/<game_id>", GameSingleResource.as_view(), name="games_single"),
|
path("games/<game_id>", GameSingleResource.as_view(), name="games_single"),
|
||||||
path("games", GameResource.as_view(), name="games"),
|
path("games", GameResource.as_view(), name="games"),
|
||||||
path("", MainResource.as_view(), name="main"),
|
path("", MainResource.as_view(), name="main"),
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class Game(models.Model):
|
|||||||
class EventTypes(EnumChoicesBase):
|
class EventTypes(EnumChoicesBase):
|
||||||
""" Event types to generate a game timeline """
|
""" Event types to generate a game timeline """
|
||||||
|
|
||||||
CREATE_GAME = 0
|
START_GAME = 0
|
||||||
PAUSE = 1
|
PAUSE = 1
|
||||||
RESUME = 2
|
RESUME = 2
|
||||||
CLICK_MINE = 3
|
CLICK_MINE = 3
|
||||||
@@ -88,7 +88,7 @@ class GameEvent(models.Model):
|
|||||||
|
|
||||||
type = models.IntegerField(
|
type = models.IntegerField(
|
||||||
choices=EventTypes.choices(),
|
choices=EventTypes.choices(),
|
||||||
default=EventTypes.CREATE_GAME,
|
default=EventTypes.START_GAME,
|
||||||
help_text="The game event",
|
help_text="The game event",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
0
game/signals.py
Normal file
0
game/signals.py
Normal file
Reference in New Issue
Block a user