Archived
Completed server side ch 12 #5
@@ -36,4 +36,3 @@ urlpatterns = [
|
|||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,8 @@
|
|||||||
UPDATE levelupapi_game SET game_type_id = 3
|
UPDATE levelupapi_game SET game_type_id = 3
|
||||||
WHERE title = 'World of Warcraft';
|
WHERE title = 'World of Warcraft';
|
||||||
|
|
||||||
|
SELECT * FROM levelupapi_gamer
|
||||||
|
WHERE levelupapi_gamer.id = auth_user.id;
|
||||||
|
|
||||||
|
INSERT INTO levelupapi_event ('description', 'date', 'time', 'game_id', 'organizer_id')
|
||||||
|
VALUES
|
||||||
@@ -4,7 +4,7 @@ from levelupapi.models.game import Game
|
|||||||
|
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
|
|
||||||
game= models.ForeignKey(Game, on_delete=models.DO_NOTHING)
|
game= models.ForeignKey(Game, on_delete=models.CASCADE)
|
||||||
description = models.CharField(max_length=256)
|
description = models.CharField(max_length=256)
|
||||||
date = models.DateField()
|
date = models.DateField()
|
||||||
time = models.TimeField((""), auto_now=False, auto_now_add=False)
|
time = models.TimeField((""), auto_now=False, auto_now_add=False)
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ class Game(models.Model):
|
|||||||
gamer = models.ForeignKey(Gamer, on_delete=models.DO_NOTHING)
|
gamer = models.ForeignKey(Gamer, on_delete=models.DO_NOTHING)
|
||||||
number_of_players = models.IntegerField()
|
number_of_players = models.IntegerField()
|
||||||
skill_level = models.IntegerField()
|
skill_level = models.IntegerField()
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,8 @@ from django.http import HttpResponseServerError
|
|||||||
from rest_framework.viewsets import ViewSet
|
from rest_framework.viewsets import ViewSet
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import serializers, status
|
from rest_framework import serializers, status
|
||||||
from levelupapi.models import Event
|
from levelupapi.models import Event, Game
|
||||||
|
from levelupapi.models.gamer import Gamer
|
||||||
|
|
||||||
class EventView(ViewSet):
|
class EventView(ViewSet):
|
||||||
"""Level up event types view"""
|
"""Level up event types view"""
|
||||||
@@ -37,11 +38,57 @@ class EventView(ViewSet):
|
|||||||
events = events.filter(game_id=game)
|
events = events.filter(game_id=game)
|
||||||
serializer = EventSerializer(events, many=True)
|
serializer = EventSerializer(events, many=True)
|
||||||
return Response(serializer.data)
|
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
|
||||||
|
"""
|
||||||
|
organizer = Gamer.objects.get(user=request.auth.user)
|
||||||
|
event = Event.objects.get(pk=request.data["event_id"])
|
||||||
|
|
||||||
|
event = Event.objects.create(
|
||||||
|
description=request.data["description"],
|
||||||
|
date=request.data["date"],
|
||||||
|
time=request.data["time"],
|
||||||
|
game_id=event.id,
|
||||||
|
organizer_id= organizer.id
|
||||||
|
)
|
||||||
|
serializer = EventSerializer(event)
|
||||||
|
return Response(serializer.data)
|
||||||
|
def update(self, request, pk):
|
||||||
|
"""Handle PUT requests for a game
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Response -- Empty body with 204 status code
|
||||||
|
"""
|
||||||
|
|
||||||
|
event = Event.objects.get(pk=pk)
|
||||||
|
event.description = request.data["description"]
|
||||||
|
event.time = request.data["time"]
|
||||||
|
event.game_id = request.data["game_id"]
|
||||||
|
event.organizer_id = request.data["organizer_id"]
|
||||||
|
event.save()
|
||||||
|
|
||||||
|
return Response(None, status=status.HTTP_204_NO_CONTENT)
|
||||||
|
def destroy(self, request, pk):
|
||||||
|
"""Handle DELETE requests for a game
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (object): DELETE request object
|
||||||
|
pk (num): Accepts the argument of the primary key of an event
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Status: If the method completes successfully, return a HTTP response 204
|
||||||
|
"""
|
||||||
|
event = Event.objects.get(pk=pk)
|
||||||
|
event.delete()
|
||||||
|
return Response(None, status=status.HTTP_204_NO_CONTENT)
|
||||||
class EventSerializer(serializers.ModelSerializer):
|
class EventSerializer(serializers.ModelSerializer):
|
||||||
"""JSON serializer for event types
|
"""JSON serializer for event types
|
||||||
"""
|
"""
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Event
|
model = Event
|
||||||
fields = ('id', 'description', 'date', 'time', 'game_id', 'organizer_id')
|
fields = ('id', 'description', 'date', 'time', 'game', 'organizer_id')
|
||||||
depth = 2
|
depth = 2
|
||||||
@@ -31,10 +31,8 @@ class GameTypeView(ViewSet):
|
|||||||
Returns:
|
Returns:
|
||||||
Response -- JSON serialized list of game types
|
Response -- JSON serialized list of game types
|
||||||
"""
|
"""
|
||||||
label = request.query_params.get('label', None)
|
|
||||||
game_types = GameType.objects.all()
|
game_types = GameType.objects.all()
|
||||||
if label is not NONE:
|
|
||||||
game_types = game_types.filter(label=label)
|
|
||||||
serializer = GameTypeSerializer(game_types, many=True)
|
serializer = GameTypeSerializer(game_types, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from django.http import HttpResponseServerError
|
|||||||
from rest_framework.viewsets import ViewSet
|
from rest_framework.viewsets import ViewSet
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import serializers, status
|
from rest_framework import serializers, status
|
||||||
from levelupapi.models import Game
|
from levelupapi.models import Game, Gamer, GameType
|
||||||
|
|
||||||
class GameView(ViewSet):
|
class GameView(ViewSet):
|
||||||
"""Level up game s view"""
|
"""Level up game s view"""
|
||||||
@@ -26,22 +26,78 @@ class GameView(ViewSet):
|
|||||||
|
|
||||||
|
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
"""Handle GET requests to get all game s
|
"""Handle GET requests to get all games
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Response -- JSON serialized list of game s
|
Response -- JSON serialized list of games
|
||||||
"""
|
"""
|
||||||
game_ = request.query_params.get('type', None)
|
game_ = request.query_params.get('type', None)
|
||||||
games = Game.objects.all()
|
games = Game.objects.all()
|
||||||
if game_ is not None:
|
if game_ is not None:
|
||||||
games = games.filter(game_type_id=game_)
|
games = games.filter(game_type_id=game_)
|
||||||
serializer = GameSerializer(games, many=True)
|
serializer = GameSerializer(games, many=True)
|
||||||
return Response(serializer.data)
|
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)
|
||||||
|
|
||||||
|
def update(self, request, pk):
|
||||||
|
"""Handle PUT requests for a game
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Response -- Empty body with 204 status code
|
||||||
|
"""
|
||||||
|
|
||||||
|
game = Game.objects.get(pk=pk)
|
||||||
|
game.title = request.data["title"]
|
||||||
|
game.maker = request.data["maker"]
|
||||||
|
game.number_of_players = request.data["number_of_players"]
|
||||||
|
game.skill_level = request.data["skill_level"]
|
||||||
|
|
||||||
|
game_type = GameType.objects.get(pk=request.data["game_type"])
|
||||||
|
game.game_type = game_type
|
||||||
|
game.save()
|
||||||
|
|
||||||
|
return Response(None, status=status.HTTP_204_NO_CONTENT)
|
||||||
|
def destroy(self, request, pk):
|
||||||
|
"""Handle DELETE requests for a game
|
||||||
|
|
||||||
|
Args:
|
||||||
|
request (object): DELETE request object
|
||||||
|
pk (num): Accepts the argument of the primary key of a game
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Status: If the method completes successfully, return a HTTP response 204
|
||||||
|
"""
|
||||||
|
game = Game.objects.get(pk=pk)
|
||||||
|
game.delete()
|
||||||
|
return Response(None, status=status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
class GameSerializer(serializers.ModelSerializer):
|
class GameSerializer(serializers.ModelSerializer):
|
||||||
"""JSON serializer for game s
|
"""JSON serializer for game s
|
||||||
"""
|
"""
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Game
|
model = Game
|
||||||
fields = ('id', 'title', 'maker', 'number_of_players', 'skill_level', 'game_type_id', 'gamer_id')
|
fields = ('id', 'title', 'maker', 'number_of_players', 'skill_level', 'game_type', 'gamer_id')
|
||||||
depth = 1
|
depth = 2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user