GameEvent listing endpoint

This commit is contained in:
2020-11-06 01:44:34 -03:00
parent 01c6b44427
commit c80dc93447
6 changed files with 25 additions and 3 deletions

View File

@@ -2,7 +2,7 @@ from rest_framework import status
from rest_framework.response import Response 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, GameEvent
from ..serializers import GameSerializer, GameEventSerializer from ..serializers import GameSerializer, GameEventSerializer
@@ -31,6 +31,12 @@ class GameSingleResource(APIView):
class GameEventResource(APIView): class GameEventResource(APIView):
def get(self, request, game_id):
""" Returns a list of all game events """
events = GameEvent.objects.filter(game_id=game_id)
serializer = GameEventSerializer(events, many=True)
return Response(serializer.data)
def post(self, request, game_id): def post(self, request, game_id):
""" Creates a new event """ """ Creates a new event """

View File

@@ -0,0 +1 @@
default_app_config = "game.apps.GameConfig"

View File

@@ -5,3 +5,6 @@ class GameConfig(AppConfig):
name = "game" name = "game"
verbose_name = "Game" verbose_name = "Game"
verbose_name_plural = "Games" verbose_name_plural = "Games"
def ready(self):
import game.signals # noqa

View File

@@ -36,7 +36,7 @@ class Migration(migrations.Migration):
"type", "type",
models.IntegerField( models.IntegerField(
choices=[ choices=[
(0, "CREATE_GAME"), (0, "START_GAME"),
(1, "PAUSE"), (1, "PAUSE"),
(2, "RESUME"), (2, "RESUME"),
(3, "CLICK_MINE"), (3, "CLICK_MINE"),
@@ -45,7 +45,7 @@ class Migration(migrations.Migration):
(6, "CLICK_FLAG"), (6, "CLICK_FLAG"),
(7, "GAME_OVER"), (7, "GAME_OVER"),
], ],
default=game.models.EventTypes["CREATE_GAME"], default=game.models.EventTypes["START_GAME"],
help_text="The game event", help_text="The game event",
), ),
), ),

View File

@@ -97,6 +97,7 @@ class GameEvent(models.Model):
) )
class Meta: class Meta:
ordering = ["created_at"]
verbose_name = "Game event" verbose_name = "Game event"
verbose_name_plural = "Game events" verbose_name_plural = "Game events"
db_table = "game_events" db_table = "game_events"

View File

@@ -0,0 +1,11 @@
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Game, GameEvent, EventTypes
@receiver(post_save, sender=Game)
def game_start(sender, signal, instance, **kwargs):
""" If the game was just created, insert the first event START_GAME """
GameEvent.objects.get_or_create(game=instance, type=EventTypes.START_GAME)