def guess(request): word_id = request.POST['wordId'] unique_id = request.POST['game_id'] player = request.POST['player'] clue_number = int(request.POST['clueNumber']) game = get_object_or_404(Game, unique_id=unique_id) user = get_object_or_404(User, username=player) check_double_post(game, user) if word_id: word = get_object_or_404(Word, id=word_id.replace('word', '')) card = get_object_or_404(Card, word=word, game=game) card.chosen = True card.save() else: # User passed card = None team_color = request.POST['teamColor'].split('_')[0] guess = Guess(user=user, guesser_team=team_color, game=game, card=card) guess.save() if not word_id: # User passed game.current_turn = find_next_turn(game) game.current_guess_number = 0 game.save() return Response({"message": "OK"}) else: game.current_guess_number += 1 if card.color == 'black': # Assassinated! game.active = False team_choices = {'red', 'blue'} other_team = (team_choices - set(team_color)).pop() game.winning_team = other_team elif (clue_number > 0 and game.current_guess_number >= clue_number + 1) \ or guess.is_wrong(): # Note: this greater than also works for '0' unlimited clues game.current_turn = find_next_turn(game) game.current_guess_number = 0 decrement_card_counter(game, card.color) check_game_over(game) game.save() return Response({"message": "OK"})
def answer(): # Prevent user from guessing twice on the same movie try: guess = Guess.save( request.form['guess'], g.user.id, request.form['movie'] ) except IntegrityError, e: return 'Du har redan gissat på den här filmen', 403