def update_hints(request): jwt_token = request.data.get('token') places = [ ('banco', 'Banco'), ('bar', 'Bar'), ('penhores', 'Casa de penhores'), ('charutaria', 'Charutaria'), ('chaveiro', 'Chaveiro'), ('docas', 'Docas'), ('carruagens', 'Estação de carruagens'), ('farmacia', 'Farmácia'), ('hotel', 'Hotel'), ('livraria', 'Livraria'), ('museu', 'Museu'), ('parque', 'Parque'), ('syard', 'Scotland Yard'), ('teatro', 'Teatro'), ] try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) try: sala = Sala.objects.get(id=jogador.sala_id) except Sala.DoesNotExist: return Response({'error': 'Usuário não está em uma sala'}, status=HTTP_403_FORBIDDEN) for place_code, place_name in places: hint_place = 'pista_{}'.format(place_code) try: status = request.data[hint_place] except: continue print(status) if (str(status).lower() == 'true'): setattr(jogador, hint_place, True) action = Action() action.text = '{} desbloqueou a pista do(a) {}.'.format( jogador.name, place_name) action.room = sala action.save() else: setattr(jogador, hint_place, False) action = Action() action.text = '{} bloqueou a pista do(a) {}.'.format( jogador.name, place_name) action.room = sala action.save() jogador.save() serializer = JogadorSerializer(jogador) return Response(data=serializer.data, status=HTTP_200_OK)
def criar_sala(request): jwt_token = request.data.get('token') case_id = request.data.get('case_id') try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) try: if (not case_id): return Response({'error': 'Erro ao encontrar o caso'}, status=HTTP_400_BAD_REQUEST) caso = Caso.objects.get(id=case_id) except Caso.DoesNotExist: return Response({'error': 'Erro ao encontrar o caso'}, status=HTTP_400_BAD_REQUEST) sala = Sala() jogador.sala_id = sala.id jogador.save() sala.caso_id = caso.id update(sala) sala.save() action = Action() action.text = '{} entrou na sala.'.format(jogador.name) action.room = sala action.save() serializer = SalaSerializer(sala) return Response(data=serializer.data, status=HTTP_200_OK)
def send_solution(request): jwt_token = request.data.get('token') solution = request.data.get('solution') try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) try: sala = Sala.objects.get(id=jogador.sala_id) except Sala.DoesNotExist: return Response({'error': 'Usuário não está em uma sala'}, status=HTTP_403_FORBIDDEN) jogador.sala_id = '' jogador.pista_banco = False jogador.pista_bar = False jogador.pista_penhores = False jogador.pista_charutaria = False jogador.pista_chaveiro = False jogador.pista_docas = False jogador.pista_carruagens = False jogador.pista_farmacia = False jogador.pista_hotel = False jogador.pista_livraria = False jogador.pista_museu = False jogador.pista_parque = False jogador.pista_syard = False jogador.pista_teatro = False jogador.save() update(sala) action = Action() action.text = '{} enviou uma solução para o caso:\n{}'.format( jogador.name, solution) action.room = sala action.save() caso = Caso.objects.get(id=sala.caso_id) if (sala.jogadores == 0): sala.delete() return Response({'solution': caso.solucao}, status=HTTP_200_OK)
def entrar_sala(request): jwt_token = request.data.get('token') sala_id = request.data.get('id') try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) try: sala = Sala.objects.get(id=sala_id) except Sala.DoesNotExist: return Response({'error': 'A sala não foi encontrada'}, status=HTTP_400_BAD_REQUEST) jogador.sala_id = sala.id jogador.save() update(sala) action = Action() action.text = '{} entrou na sala.'.format(jogador.name) action.room = sala action.save() serializer = SalaSerializer(sala) return Response(data=serializer.data, status=HTTP_200_OK)
def sair_sala(request): jwt_token = request.data.get('token') try: jogador = make_jogador(jwt_token) except: return Response({'error': 'Usuário não identificado'}, status=HTTP_403_FORBIDDEN) try: sala = Sala.objects.get(id=jogador.sala_id) except Sala.DoesNotExist: return Response({'error': 'Usuário não está em uma sala'}, status=HTTP_403_FORBIDDEN) jogador.sala_id = '' jogador.pista_banco = False jogador.pista_bar = False jogador.pista_penhores = False jogador.pista_charutaria = False jogador.pista_chaveiro = False jogador.pista_docas = False jogador.pista_carruagens = False jogador.pista_farmacia = False jogador.pista_hotel = False jogador.pista_livraria = False jogador.pista_museu = False jogador.pista_parque = False jogador.pista_syard = False jogador.pista_teatro = False jogador.save() update(sala) action = Action() action.text = '{} saiu da sala.'.format(jogador.name) action.room = sala action.save() serializer = SalaSerializer(sala) if (sala.jogadores == 0): sala.delete() return Response(data=serializer.data, status=HTTP_200_OK)