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.views import APIView
|
||||
|
||||
from game.models import Game
|
||||
from game.models import Game, GameEvent
|
||||
from ..serializers import GameSerializer, GameEventSerializer
|
||||
|
||||
|
||||
@@ -31,6 +31,12 @@ class GameSingleResource(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):
|
||||
""" Creates a new event """
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
default_app_config = "game.apps.GameConfig"
|
||||
|
||||
@@ -5,3 +5,6 @@ class GameConfig(AppConfig):
|
||||
name = "game"
|
||||
verbose_name = "Game"
|
||||
verbose_name_plural = "Games"
|
||||
|
||||
def ready(self):
|
||||
import game.signals # noqa
|
||||
|
||||
@@ -36,7 +36,7 @@ class Migration(migrations.Migration):
|
||||
"type",
|
||||
models.IntegerField(
|
||||
choices=[
|
||||
(0, "CREATE_GAME"),
|
||||
(0, "START_GAME"),
|
||||
(1, "PAUSE"),
|
||||
(2, "RESUME"),
|
||||
(3, "CLICK_MINE"),
|
||||
@@ -45,7 +45,7 @@ class Migration(migrations.Migration):
|
||||
(6, "CLICK_FLAG"),
|
||||
(7, "GAME_OVER"),
|
||||
],
|
||||
default=game.models.EventTypes["CREATE_GAME"],
|
||||
default=game.models.EventTypes["START_GAME"],
|
||||
help_text="The game event",
|
||||
),
|
||||
),
|
||||
|
||||
@@ -97,6 +97,7 @@ class GameEvent(models.Model):
|
||||
)
|
||||
|
||||
class Meta:
|
||||
ordering = ["created_at"]
|
||||
verbose_name = "Game event"
|
||||
verbose_name_plural = "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