From ea22ef837132ee7fa0bbb156aa15a191ce2d6160 Mon Sep 17 00:00:00 2001 From: bytesparallel Date: Wed, 9 Feb 2022 15:56:52 -0600 Subject: [PATCH] saving progress on ch 8 --- levelupapi/models/game.py | 3 ++- levelupapi/views/events.py | 19 +++++++++++++++++++ levelupapi/views/games.py | 27 ++++++++++++++++++++++++--- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/levelupapi/models/game.py b/levelupapi/models/game.py index a4b7c86..d2bb43b 100644 --- a/levelupapi/models/game.py +++ b/levelupapi/models/game.py @@ -10,4 +10,5 @@ class Game(models.Model): maker = models.CharField(max_length=256) gamer = models.ForeignKey(Gamer, on_delete=models.DO_NOTHING) number_of_players = models.IntegerField() - skill_level = models.IntegerField() \ No newline at end of file + skill_level = models.IntegerField() + diff --git a/levelupapi/views/events.py b/levelupapi/views/events.py index d3a53d1..08c9331 100644 --- a/levelupapi/views/events.py +++ b/levelupapi/views/events.py @@ -37,6 +37,25 @@ class EventView(ViewSet): events = events.filter(game_id=game) serializer = EventSerializer(events, many=True) return Response(serializer.data) + # confused as to why I'm getting a 500 error on this. An article seems to indicate that I may need to nest more of my data inside another JSON object, if for example, it has foreign keys with additional data. https://stackoverflow.com/questions/60279456/django-postman-error-this-field-is-required + def create(self, request): + """Handle POST operations + + Returns + Response -- JSON serialized game instance + """ + event = Event.objects.get(user=request.auth.user) + event_type = Event.objects.get(pk=request.data["description"]) + + event = Event.objects.create( + description=request.data["description"], + date=request.data["date"], + time=request.data["time"], + game_id=request.data["game_id"], + organizer_id=request.data["organizer_id"] + ) + serializer = EventSerializer(event) + return Response(serializer.data) class EventSerializer(serializers.ModelSerializer): """JSON serializer for event types diff --git a/levelupapi/views/games.py b/levelupapi/views/games.py index 72c1b9a..6604d8e 100644 --- a/levelupapi/views/games.py +++ b/levelupapi/views/games.py @@ -2,7 +2,7 @@ from django.http import HttpResponseServerError from rest_framework.viewsets import ViewSet from rest_framework.response import Response from rest_framework import serializers, status -from levelupapi.models import Game +from levelupapi.models import Game, Gamer, GameType class GameView(ViewSet): """Level up game s view""" @@ -34,14 +34,35 @@ class GameView(ViewSet): game_ = request.query_params.get('type', None) games = Game.objects.all() if game_ is not None: - games = games.filter(game_type_id=game_) + games = games.filter(game_type_id=game_) serializer = GameSerializer(games, many=True) return Response(serializer.data) + def create(self, request): + """Handle POST operations + + Returns + Response -- JSON serialized game instance + """ + gamer = Gamer.objects.get(user=request.auth.user) + game_type = GameType.objects.get(pk=request.data["game_type"]) + + game = Game.objects.create( + title=request.data["title"], + maker=request.data["maker"], + number_of_players=request.data["number_of_players"], + skill_level=request.data["skill_level"], + gamer=gamer, + game_type=game_type + ) + serializer = GameSerializer(game) + return Response(serializer.data) + class GameSerializer(serializers.ModelSerializer): """JSON serializer for game s """ class Meta: model = Game fields = ('id', 'title', 'maker', 'number_of_players', 'skill_level', 'game_type_id', 'gamer_id') - depth = 1 \ No newline at end of file + depth = 1 + \ No newline at end of file