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})
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])
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})
def get(self): output = Room.objects() players = Player.objects() return jsonify({'result': output, 'players': players})