GameEvent listing endpoint
This commit is contained in:
@@ -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 """
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
default_app_config = "game.apps.GameConfig"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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",
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user