jr bk2ch6 #4

Merged
JMR-dev merged 2 commits from jr-bk2ch6 into main 2022-02-09 20:11:41 +00:00
7 changed files with 119 additions and 11 deletions
+7
View File
@@ -18,15 +18,22 @@ from django.conf.urls import include
from django.urls import path from django.urls import path
from levelupapi.views import register_user, login_user from levelupapi.views import register_user, login_user
from rest_framework import routers from rest_framework import routers
from levelupapi.views.games import GameView
from levelupapi.views.game_type import GameTypeView from levelupapi.views.game_type import GameTypeView
from levelupapi.views.events import EventView
router = routers.DefaultRouter(trailing_slash=False) router = routers.DefaultRouter(trailing_slash=False)
router.register(r'gametypes', GameTypeView, 'gametype') router.register(r'gametypes', GameTypeView, 'gametype')
router.register(r'games', GameView, 'game')
router.register(r'events', EventView, 'event')
urlpatterns = [ urlpatterns = [
path('register', register_user), path('register', register_user),
path('login', login_user), path('login', login_user),
path('api-auth', include('rest_framework.urls', namespace='rest_framework')),
path('', include(router.urls)), path('', include(router.urls)),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
] ]
+2 -4
View File
@@ -1,4 +1,2 @@
UPDATE levelupapi_game SET game_type_id = 3
SELECT * FROM auth_user; WHERE title = 'World of Warcraft';
SELECT * FROM authtoken_token;
SELECT * FROM levelupapi_gamer;
+1 -1
View File
@@ -13,7 +13,7 @@
}, },
{ {
"model": "levelupapi.game", "model": "levelupapi.game",
"pk": 2, "pk": 3,
"fields": { "fields": {
"game_type": 2, "game_type": 2,
"title": "World of Warcraft", "title": "World of Warcraft",
+3 -1
View File
@@ -1 +1,3 @@
from .auth import login_user, register_user from .auth import login_user, register_user
from .game_type import GameTypeView
from .games import GameView
+47
View File
@@ -0,0 +1,47 @@
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 Event
class EventView(ViewSet):
"""Level up event types view"""
def retrieve(self, request, pk):
"""Handle GET requests for single event type
Returns:
Response -- JSON serialized event type
"""
try:
game_type = Event.objects.get(pk=pk)
serializer = EventSerializer(game_type)
return Response(serializer.data)
except Event.DoesNotExist as ex:
return Response({'message': ex.args[0]}, status=status.HTTP_404_NOT_FOUND)
def list(self, request):
"""Handle GET requests to get all event types
Returns:
Response -- JSON serialized list of event types
"""
events = Event.objects.all()
# Add in the next 3 lines
game = request.query_params.get('game_id', None)
if game is not None:
events = events.filter(game_id=game)
serializer = EventSerializer(events, many=True)
return Response(serializer.data)
class EventSerializer(serializers.ModelSerializer):
"""JSON serializer for event types
"""
class Meta:
model = Event
fields = ('id', 'description', 'date', 'time', 'game_id', 'organizer_id')
depth = 2
+12 -5
View File
@@ -1,9 +1,11 @@
"""View module for handling requests about game types""" """View module for handling requests about game types"""
from cProfile import label
from pickle import NONE
from django.http import HttpResponseServerError 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 GameType from levelupapi.models import GameType, game_type
class GameTypeView(ViewSet): class GameTypeView(ViewSet):
@@ -16,10 +18,12 @@ class GameTypeView(ViewSet):
Returns: Returns:
Response -- JSON serialized game type Response -- JSON serialized game type
""" """
game_type = GameType.objects.get(pk=pk) try:
serializer = GameTypeSerializer(game_type) game_type = GameType.objects.get(pk=pk)
return Response(serializer.data) serializer = GameTypeSerializer(game_type)
return Response(serializer.data)
except GameType.DoesNotExist as ex:
return Response({'message': ex.args[0]}, status=status.HTTP_404_NOT_FOUND)
def list(self, request): def list(self, request):
"""Handle GET requests to get all game types """Handle GET requests to get all game types
@@ -27,7 +31,10 @@ 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)
+47
View File
@@ -0,0 +1,47 @@
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
class GameView(ViewSet):
"""Level up game s view"""
def retrieve(self, request, pk):
"""Handle GET requests for single game
Returns:
Response -- JSON serialized game
"""
# Add in the next 3 lines
try:
game = Game.objects.get(pk=pk)
serializer = GameSerializer(game)
return Response(serializer.data)
except Game.DoesNotExist as ex:
return Response({'message': ex.args[0]}, status=status.HTTP_404_NOT_FOUND)
def list(self, request):
"""Handle GET requests to get all game s
Returns:
Response -- JSON serialized list of game s
"""
game_ = request.query_params.get('type', None)
games = Game.objects.all()
if game_ is not None:
games = games.filter(game_type_id=game_)
serializer = GameSerializer(games, many=True)
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