def get(self, request, pk): try: character = Character.objects.get(pk=pk) body = serializer_to_body(CharacterSerializer, character, "character") return Response(body, status=status.HTTP_200_OK) except Character.DoesNotExist: return Response("Character does not exist", status=status.HTTP_400_BAD_REQUEST)
def post(self, request): data = post_request_parser(request) form = MonsterForm(data) if form.is_valid(): monster = form.save() body = serializer_to_body(MonsterSerializer, monster, "monster") return Response(body, status=status.HTTP_200_OK) else: return Response(form.errors, status=status.HTTP_400_BAD_REQUEST)
def post(self, request, pk): """ Retrieves character id from form """ user = request.user equipment = get_object_or_404(Equipment, pk=pk) data = post_request_parser(request) character_id = data.get('character_id', data) character = user.characters.get(pk=character_id) character = character.equip(equipment) body = serializer_to_body(CharacterSerializer, character, "character") return Response(body, status=status.HTTP_200_OK)
def patch(self, request, pk): try: monster = Monster.objects.get(pk=pk) serializer = MonsterSerializer(monster, data=request.data, partial=True) if serializer.is_valid(): monster = serializer.save() body = serializer_to_body(MonsterSerializer, monster, "monster") return Response(body, status=status.HTTP_200_OK) else: return Response("Invalid form", status=status.HTTP_400_BAD_REQUEST) except Monster.DoesNotExist: return Response("Monster does not exist", status=status.HTTP_400_BAD_REQUEST)
def get(self, request, pk=None): """ Retrieves multiplayer bosses """ if pk: try: monster = Monster.objects.get(pk=pk) body = serializer_to_body(MonsterSerializer, monster, "monster") return Response(body, status=status.HTTP_200_OK) except Monster.DoesNotExist: return Response("Monster does not exist", status=status.HTTP_400_BAD_REQUEST) else: monsters = Monster.objects.filter( party_size__gte=2).order_by('pk').all() body = {"data": MonsterSerializer(monsters, many=True).data} return Response(body, status=status.HTTP_200_OK)