Exemplo n.º 1
0
 def post(id) -> Response:
     data = request.get_json()['data']
     print("RESPONDIENDO PREGUNTA", flush=True)
     print(data, flush=True)
     player_id = data['nick']
     question_option_id = data['id']
     question = Question.objects.get(id=id)
     a_room = Room.objects.get(name=data['room_name'])
     a_round = Room.objects.getRoundForAQuestion(data['room_name'], id)
     post_answer = question.options.get(_id=data['id'])
     first_correct_answer = not Room.objects.roundHasAnyCorrectAnswer(
         a_round)
     if post_answer.correct:
         points_to_add = 1
         if first_correct_answer:
             points_to_add += 1
         player = Player.objects.get(nick=data['nick'])
         player.update(points=player.points + points_to_add)
     a_round.answers.create(player_id=player_id,
                            question_option_id=question_option_id,
                            first=first_correct_answer)
     Room.objects(name=data['room_name'],
                  rounds__id=a_round.id).update(set__rounds__S=a_round)
     a_room.save()
     a_room.reload()
     return jsonify({'result': post_answer.correct})
Exemplo n.º 2
0
    def post(room_id) -> Response:
        room_name = room_id
        try:
            room = Room.objects.get(name=room_name)
        except DoesNotExist:
            raise abort(404, message="La Sala no Existe")

        categories = request.json.get('categories',
                                      [c.id for c in room.categories])
        rounds_amount = request.json.get('rounds_amount', room.rounds_amount)
        round_time = request.json.get('round_time', room.round_time)

        try:
            Room.objects(name=room_name).update(categories=[],
                                                rounds_amount=rounds_amount,
                                                round_time=round_time,
                                                rounds=[])
            for c in categories:
                try:
                    category = Category(name=c)
                    room.update(add_to_set__categories=category)
                    room.reload()
                except DoesNotExist:
                    raise abort(404, message="Categoria incorrecta")
            room.reload()
        except ValidationError as e:
            raise abort(400, message=e.message)
        rounds = Room.objects.getRoundsFor(room_name)
        for round_obj in rounds:
            room.update(add_to_set__rounds=round_obj)
            room.reload()
        return jsonify({'result': room})
 def test_get_points_for_a_player_no_answers(self):
     a_player = Player(nick="a player")
     a_player.save()
     a_room = Room(name="a room name", owner=a_player, rounds_amount=1)
     a_room.save()
     self.assertEqual(0, Room.objects.getPointsFor("a room name",
                                                   "a player"))
 def test_get_rounds_with_a_room_name(self):
     a_player = Player(nick="a player")
     a_player.save()
     a_room = Room(name="a room name", owner=a_player, rounds_amount=1)
     a_room.save()
     self.assertEqual(a_room.rounds,
                      Room.objects.getRoundsFor("a room name"))
 def test_03_get_one_room_1_found(self):
     player = Player(nick="Juan")
     room = Room(name="sala del test 3", owner=player)
     room.save()
     response = self.test_client.get(f"/rooms/{room.name}/")
     self.assertEqual(200, response.status_code)
     self.assertEqual(room.name, response.json['result']['_id'])
     self.assertEqual(player.nick, response.json['result']['owner'])
 def test_search_owner_nick_and_room_name_1_found(self):
     player = Player(nick="Juan").save()
     player_2 = Player(nick="Milagros").save()
     room = Room(name="Sala de Juan", owner=player, participants=[player_2])
     room.save()
     response = self.test_client.get("/rooms/search/?q=juan")
     self.assertEqual(200, response.status_code)
     self.assertEqual(1, len(response.json['result']))
     self.assertEqual(room.name, response.json['result'][0]['_id'])
     self.assertEqual(player.nick, response.json['result'][0]['owner'])
     self.assertEqual(player_2.nick,
                      response.json['result'][0]['participants'][0])
 def test_02_get_all_rooms_1_found(self):
     player = Player(nick="Juan")
     player_2 = Player(nick="Milagros")
     room = Room(name="sala del test 2",
                 owner=player,
                 participants=[player_2])
     room.save()
     response = self.test_client.get("/rooms/")
     self.assertEqual(200, response.status_code)
     self.assertEqual(room.name, response.json['result'][0]['_id'])
     self.assertEqual(player.nick, response.json['result'][0]['owner'])
     self.assertEqual(player_2.nick,
                      response.json['result'][0]['participants'][0])
Exemplo n.º 8
0
 def post() -> Response:
     owner_name = request.json['owner']
     room_name = request.json['name']
     categories = request.json.get('categories', [])
     rounds_amount = request.json.get('rounds_amount', 4)
     round_time = request.json.get('round_time', 10)
     try:
         player = Player.objects.get(nick=owner_name)
     except DoesNotExist:
         raise abort(404)
     post_room = Room(name=room_name,
                      owner=player,
                      rounds_amount=rounds_amount,
                      round_time=round_time)
     try:
         post_room.save()
     except ValidationError as e:
         raise abort(400, message=e.message)
     for c in categories:
         try:
             category = Category(name=c)
             post_room.update(add_to_set__categories=category)
             post_room.reload()
         except DoesNotExist:
             raise abort(404)
     rounds = Room.objects.getRoundsFor(post_room.name)
     for round_obj in rounds:
         post_room.update(add_to_set__rounds=round_obj)
         post_room.reload()
     return jsonify({'result': post_room})
Exemplo n.º 9
0
 def get(self):
     output = Room.objects()
     players = Player.objects()
     return jsonify({'result': output, 'players': players})