diff --git a/levelup/urls.py b/levelup/urls.py index 2b91885..7c65d8c 100644 --- a/levelup/urls.py +++ b/levelup/urls.py @@ -30,8 +30,10 @@ router.register(r'events', EventView, 'event') urlpatterns = [ path('register', register_user), path('login', login_user), + path('api-auth', include('rest_framework.urls', namespace='rest_framework')), path('', include(router.urls)), path('admin/', admin.site.urls), + ] diff --git a/levelupapi/db.sql b/levelupapi/db.sql index aca671e..15c11a2 100644 --- a/levelupapi/db.sql +++ b/levelupapi/db.sql @@ -1,4 +1,2 @@ - -SELECT * FROM auth_user; -SELECT * FROM authtoken_token; -SELECT * FROM levelupapi_gamer; \ No newline at end of file +UPDATE levelupapi_game SET game_type_id = 3 +WHERE title = 'World of Warcraft'; \ No newline at end of file diff --git a/levelupapi/fixtures/games.json b/levelupapi/fixtures/games.json index fc99187..e4359d2 100644 --- a/levelupapi/fixtures/games.json +++ b/levelupapi/fixtures/games.json @@ -13,7 +13,7 @@ }, { "model": "levelupapi.game", - "pk": 2, + "pk": 3, "fields": { "game_type": 2, "title": "World of Warcraft", diff --git a/levelupapi/views/events.py b/levelupapi/views/events.py index db1a71f..d3a53d1 100644 --- a/levelupapi/views/events.py +++ b/levelupapi/views/events.py @@ -14,9 +14,13 @@ class EventView(ViewSet): Returns: Response -- JSON serialized event type """ - event = Event.objects.get(pk=pk) - serializer = EventSerializer(event) - return Response(serializer.data) + 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): @@ -25,8 +29,13 @@ class EventView(ViewSet): Returns: Response -- JSON serialized list of event types """ - event = Event.objects.all() - serializer = EventSerializer(event, many=True) + 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): @@ -34,4 +43,5 @@ class EventSerializer(serializers.ModelSerializer): """ class Meta: model = Event - fields = ('id', 'description', 'date', 'time', 'game_id', 'organizer_id') \ No newline at end of file + fields = ('id', 'description', 'date', 'time', 'game_id', 'organizer_id') + depth = 2 \ No newline at end of file diff --git a/levelupapi/views/game_type.py b/levelupapi/views/game_type.py index 8fcfd12..add2d19 100644 --- a/levelupapi/views/game_type.py +++ b/levelupapi/views/game_type.py @@ -1,9 +1,11 @@ """View module for handling requests about game types""" +from cProfile import label +from pickle import NONE 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 GameType +from levelupapi.models import GameType, game_type class GameTypeView(ViewSet): @@ -16,10 +18,12 @@ class GameTypeView(ViewSet): Returns: Response -- JSON serialized game type """ - game_type = GameType.objects.get(pk=pk) - serializer = GameTypeSerializer(game_type) - return Response(serializer.data) - + try: + game_type = GameType.objects.get(pk=pk) + 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): """Handle GET requests to get all game types @@ -27,7 +31,10 @@ class GameTypeView(ViewSet): Returns: Response -- JSON serialized list of game types """ + label = request.query_params.get('label', None) game_types = GameType.objects.all() + if label is not NONE: + game_types = game_types.filter(label=label) serializer = GameTypeSerializer(game_types, many=True) return Response(serializer.data) diff --git a/levelupapi/views/games.py b/levelupapi/views/games.py index 152803e..72c1b9a 100644 --- a/levelupapi/views/games.py +++ b/levelupapi/views/games.py @@ -5,33 +5,43 @@ from rest_framework import serializers, status from levelupapi.models import Game class GameView(ViewSet): - """Level up game types view""" + """Level up game s view""" def retrieve(self, request, pk): - """Handle GET requests for single game type + """Handle GET requests for single game Returns: - Response -- JSON serialized game type + Response -- JSON serialized game """ - game = Game.objects.get(pk=pk) - serializer = GameSerializer(game) - return Response(serializer.data) + + +# 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 types + """Handle GET requests to get all game s Returns: - Response -- JSON serialized list of game types + Response -- JSON serialized list of game s """ - game = Game.objects.all() - serializer = GameSerializer(game, many=True) + 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 types + """JSON serializer for game s """ class Meta: model = Game - fields = ('id', 'title', 'maker', 'number_of_players', 'skill_level', 'game_type_id', 'gamer_id') \ No newline at end of file + fields = ('id', 'title', 'maker', 'number_of_players', 'skill_level', 'game_type_id', 'gamer_id') + depth = 1 \ No newline at end of file