Exemplo n.º 1
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})
Exemplo n.º 2
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.º 3
0
 def get(self):
     output = Room.objects()
     players = Player.objects()
     return jsonify({'result': output, 'players': players})