def post(self): if not self.user: logging.critical('Invalid vote attempt detected!') else: game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) if (self.user.user_id in game.users) and game.can_vote: if self.user.user_id in game.users_voted: game = removeVote(game, self.user) resetAFK(self.user) choice = int(self.request.get('part_voted')) if str(self.user.user_id) == game.users_next_parts[choice]: logging.critical('Attempt to vote for self detected. user_id: ' + str(self.user.user_id)) game.users_voted.append(self.user.user_id) game.votes.append(choice) if allUsersVoted(game): changeToDisplayPhase(game) else: game.put() #storeCache(game, game_id) self.response.headers.add_header('response', "s") return self.response.headers.add_header('response', "n") return
def post(self): if not self.user: logging.critical('Invalid end-text attempt detected!') else: game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) response = {} response['end_text'] = getEndText(game) self.response.out.write(json.dumps(response)) return
def removeUser(game_id, user_id): game = Game.get_by_key_name(game_id) user = retrieveCache(user_id, User) user.current_game = None game.users.remove(str(user_id)) game.current_players -= 1 storeCache(user, user_id) try: game.put() #storeCache(game, str(game.game_id)) except Exception, ex: logging.critical(ex)
def post(self): if not self.user: logging.critical('Invalid choice fetching detected!') else: info = json.loads(self.request.body) game_id = str(info['game_id']) game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) game = checkForDoubleSubmissions(game) json_string = json.dumps({"choices": game.next_parts}) self.response.out.write(json_string); return
def get(self): if not self.user: self.render(u'login_screen') else: game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) if not self.user.user_id in game.users: self.render(u'error_screen') elif len(game.users) > 1: startGame(game_id) self.redirect("/game_screen?" + urllib.urlencode({'game_id':game_id})) return
def get(self): game_id = self.request.get('game_id') if game_id is None: info = json.loads(self.request.body) game_id = info['game_id'] game = Game.get_by_key_name(str(game_id)) #game = retrieveCache(str(game_id), Game) self.response.headers['Content-type'] = 'text/html' if not self.user: self.render(u'login_screen') else: names, pictures = getUserInfo(game_id) self.render(u'game_screen', game_id=game_id, user_id=self.user.user_id, end_sentence=game.end_sentence, start_sentence=game.start_sentence, zipList=zip(names,pictures)) return
def post(self): if not self.user: logging.critical("Invalid part submission detected!") else: info = json.loads(self.request.body) game_id = info['game_id'] game = Game.get_by_key_name(str(game_id)) #game = retrieveCache(str(game_id), Game) if self.user.user_id in game.users and not self.user.user_id in game.users_next_parts and game.can_submit: next_part = info['next_part'] next_part = cleanSubmission(next_part) game = Game.get_by_key_name(str(game_id)) #game = retrieveCache(str(game_id), Game) game.next_parts.append(next_part) game.users_next_parts.append(self.user.user_id) game.put() time_left = abs((datetime.datetime.now() - game.end_submission_time).seconds) if allUsersSubmitted(game) and time_left > 10: changeToVotingPhase(game) self.response.headers.add_header('success', 's') else: self.response.headers.add_header('success', 'f') return
def get(self): if not self.user: self.render(u'login_screen') else: if self.user.first_time: self.user.first_time = False storeCache(self.user, self.user.user_id) self.render(u'user_settings') else: in_game = False if not self.user.current_game is None: game = Game.get_by_key_name(str(self.user.current_game)) if not game is None: in_game = game.started self.render(u'menu_screen', in_game=in_game, game_id=self.user.current_game)
def post(self): if self.user: info = json.loads(self.request.body) game_id = info['game_id'] user = self.user try: game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) db.delete(game) #deleteData(game, game_id) user = resetPlayerHost(user.user_id) self.user.current_game = None storeCache(user, user.user_id) except Exception, ex: logging.critical(ex)
def joinGame(user, game_id): result = Game.get_by_key_name(str(game_id)) #result = retrieveCache(str(game_id), Game) if result.current_players == MAX_PLAYERS or result.started or (str(user.user_id) in result.users): return False result.users.append(user.user_id) result.current_players += 1 resetAFK(user) user.current_game = str(game_id) storeCache(user, user.user_id) if result.current_players == MAX_PLAYERS: startGame(game_id) #storeCache(result, str(game_id)) return result.game_id result.put() #storeCache(result, str(game_id)) return result.game_id
def startGame(game_id): game = Game.get_by_key_name(str(game_id)) #game = retrieveCache(str(game_id), Game) if game.started: return False game.started = True current_time = datetime.datetime.now() end_submission = current_time + datetime.timedelta(seconds=SUBMISSION_TIME) game.end_submission_time = end_submission game.can_submit = True game.next_parts = [] game.users_next_parts = [] for user in game.users: game.scores.append(0) game.put() #storeCache(game, str(game_id)) return True
def post(self): if not self.user: logging.critical("Invalid vote completion verification detected!") else: game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) self.response.headers['Content-type'] = 'application/json' if not game.can_vote and game.display_phase: self.response.headers.add_header('completed', "v") recent_winner_string = "\"" + game.winning_sentences[len(game.winning_sentences)-1] + "\" By: " + game.winning_users_names[len(game.winning_users_names) - 1] self.response.headers.add_header('recent_winner', recent_winner_string) elif datetime.datetime.now() > game.end_vote_time: markAFKS(game, game.users_voted) changeToDisplayPhase(game, self) else: self.response.headers.add_header('completed', "i") response = {} response['winning_data'] = getRecentScoreInfo(game) self.response.out.write(json.dumps(response)) return
def post(self): if not self.user: logging.critical("Invalid display completion verification detected!") return else: game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) #game = retrieveCache(game_id, Game) response = {} self.response.headers['Content-type'] = 'application/json' response['updated_story'] = getStoryStringForGameScreen(game) response['scores'] = getScoreInfo(game) response['profiles'], response['afks'] = getProfilesAndAFKS(response['scores']) self.response.out.write(json.dumps(response)) if (game.num_phases < game.game_length or game.went_to_submission): if not game.display_phase and game.can_submit: self.response.headers.add_header('response', "v") return elif datetime.datetime.now() > game.end_display_time: changeToSubmissionPhase(game, self) game.went_to_submission = True game.put() #storeCache(game, game_id) return self.response.headers.add_header('response', "i") self.response.headers.add_header('updated_story', "") else: if (not game.display_phase) and game.finished: self.response.headers.add_header('response', "v") return elif datetime.datetime.now() > game.end_display_time: self.response.headers.add_header('response', "v") finishGame(game) return self.response.headers.add_header('response', "i") return
def post(self): game_id = self.request.get('game_id') game = Game.get_by_key_name(game_id) postToReddit(game) removeGame(game)