Skip to content

Commit c6555d6

Browse files
author
sbmsr
committed
init commit
1 parent 2a048f8 commit c6555d6

File tree

3 files changed

+11
-53
lines changed

3 files changed

+11
-53
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# django-rest-backend by Jobsimulator.dev
44

5-
This is an Django-based Pokémon REST API based on PokeAPI. Your job is to fix 5 issues:
5+
This is an Django-based Pokémon REST API. Your job is to fix 5 issues:
66

77
1. [Update `/pokemon` endpoint to include a Pokémon's type.](https://github.com/developer-job-simulation/django-rest-backend/issues/1)
88
1. [Implement Get Pokémon by ID](https://github.com/developer-job-simulation/django-rest-backend/issues/2)

pokemon/serializers.py

+1-7
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,10 @@
44

55
# TODO: Add a serializer for PokemonTypes, and use it as a nested serializer for PokemonSerializer
66

7-
class PokemonTypeSerializer(serializers.ModelSerializer):
8-
class Meta:
9-
model = PokemonTypes
10-
fields = ('type',)
11-
127

138
class PokemonSerializer(serializers.ModelSerializer):
14-
types = PokemonTypeSerializer(many=True)
159

1610
class Meta:
1711
model = Pokemon
1812
fields = ('id', 'name_english', 'name_japanese', 'name_chinese', 'name_french', 'hp', 'attack', 'defense',
19-
'special_attack', 'special_defense', 'speed', 'types',)
13+
'special_attack', 'special_defense', 'speed', )

pokemon/views.py

+9-45
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.http import JsonResponse
1+
from django.http import JsonResponse, HttpResponse
22
from django.views.decorators.csrf import csrf_exempt
33
from rest_framework.decorators import api_view
44

@@ -23,12 +23,8 @@ def pokemon_by_id(request, id):
2323
"""
2424
Get Pokemon by ID
2525
"""
26-
try:
27-
pokemon = Pokemon.objects.get(pk=id)
28-
serializer = PokemonSerializer(pokemon)
29-
return JsonResponse(serializer.data, safe=False, json_dumps_params={'ensure_ascii': False})
30-
except Exception as e:
31-
return JsonResponse({'error': 'Not found'}, status=404)
26+
# TODO: Implement Endpoint
27+
return HttpResponse(status=501)
3228

3329

3430
@csrf_exempt
@@ -37,55 +33,23 @@ def pokemon_by_name(request, name):
3733
"""
3834
Get Pokemon by name
3935
"""
40-
pokemon = Pokemon.objects.filter(name_english__iexact=name)
41-
if len(pokemon) == 0:
42-
return JsonResponse({'error': 'Not found'}, status=404)
43-
serializer = PokemonSerializer(pokemon.first())
44-
return JsonResponse(serializer.data, safe=False, json_dumps_params={'ensure_ascii': False})
36+
# TODO: Implement Endpoint
37+
return HttpResponse(status=501)
4538

4639

4740
@csrf_exempt
4841
def pokemon_by_type(request, pokemon_type):
4942
"""
5043
Get Pokemon by type
5144
"""
52-
pokemon_type = pokemon_type.lower().capitalize()
53-
if VALID_POKEMON_TYPES.count((pokemon_type, pokemon_type)) == 0:
54-
return JsonResponse({'error': 'Bad request'}, status=400)
55-
pokemon = Pokemon.objects.filter(types__type__iexact=pokemon_type)
56-
if len(pokemon) == 0:
57-
return JsonResponse({'error': 'Not found'}, status=404)
58-
serializer = PokemonSerializer(pokemon, many=True)
59-
return JsonResponse(serializer.data, safe=False, json_dumps_params={'ensure_ascii': False})
45+
# TODO: Implement Endpoint
46+
return HttpResponse(status=501)
6047

6148

6249
@csrf_exempt
6350
def pokemon_by_hp(request):
6451
"""
6552
Get Pokemon by HP
6653
"""
67-
pokemon = Pokemon.objects.all()
68-
lt = request.GET.get('lt')
69-
gt = request.GET.get('gt')
70-
lte = request.GET.get('lte')
71-
gte = request.GET.get('gte')
72-
73-
valid_query_params = set(['lt', 'gt', 'lte', 'gte'])
74-
75-
if not set(request.GET.keys()) <= valid_query_params:
76-
return JsonResponse({'error': 'Invalid Operator. Must be one of ["gt","gte","lt","lte"]'}, status=400)
77-
78-
if lt is not None:
79-
pokemon = pokemon.filter(hp__lt=int(lt))
80-
if gt is not None:
81-
pokemon = pokemon.filter(hp__gt=int(gt))
82-
if gte is not None:
83-
pokemon = pokemon.filter(hp__gte=int(gte))
84-
if lte is not None:
85-
pokemon = pokemon.filter(hp__lte=int(lte))
86-
87-
if len(pokemon) == 0:
88-
return JsonResponse({'error': 'Not found'}, status=404)
89-
90-
serializer = PokemonSerializer(pokemon, many=True)
91-
return JsonResponse(serializer.data, safe=False, json_dumps_params={'ensure_ascii': False})
54+
# TODO: Implement Endpoint
55+
return HttpResponse(status=501)

0 commit comments

Comments
 (0)