Beispiel #1
0
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)