def update_outcomes(self, outcomes): for index in range(0, len(self.outcomes)): self.outcomes[index][OutcomeKeys.TOTAL_USERS] = int( outcomes[index][OutcomeKeys.TOTAL_USERS] ) self.outcomes[index][OutcomeKeys.TOTAL_POINTS] = int( outcomes[index][OutcomeKeys.TOTAL_POINTS] ) if outcomes[index]["top_predictors"] != []: # Sort by points placed by other users outcomes[index]["top_predictors"] = sorted( outcomes[index]["top_predictors"], key=lambda x: x["points"], reverse=True, ) # Get the first elements (most placed) top_points = outcomes[index]["top_predictors"][0]["points"] self.outcomes[index][OutcomeKeys.TOP_POINTS] = top_points self.total_users = ( self.outcomes[0][OutcomeKeys.TOTAL_USERS] + self.outcomes[1][OutcomeKeys.TOTAL_USERS] ) self.total_points = ( self.outcomes[0][OutcomeKeys.TOTAL_POINTS] + self.outcomes[1][OutcomeKeys.TOTAL_POINTS] ) if ( self.total_users > 0 and self.outcomes[0][OutcomeKeys.TOTAL_POINTS] > 0 and self.outcomes[1][OutcomeKeys.TOTAL_POINTS] > 0 ): for index in range(0, len(self.outcomes)): self.outcomes[index][OutcomeKeys.PERCENTAGE_USERS] = float_round( (100 * self.outcomes[index][OutcomeKeys.TOTAL_USERS]) / self.total_users ) self.outcomes[index][OutcomeKeys.ODDS] = float_round( self.total_points / self.outcomes[index][OutcomeKeys.TOTAL_POINTS] ) self.outcomes[index][OutcomeKeys.ODDS_PERCENTAGE] = float_round( 100 / self.outcomes[index][OutcomeKeys.ODDS] ) self.__clear_outcomes()
def update_outcomes(self, outcomes): self.outcomes[0]["total_users"] = int(outcomes[0]["total_users"]) self.outcomes[1]["total_users"] = int(outcomes[1]["total_users"]) self.outcomes[0]["total_points"] = int(outcomes[0]["total_points"]) self.outcomes[1]["total_points"] = int(outcomes[1]["total_points"]) self.total_users = (self.outcomes[0]["total_users"] + self.outcomes[1]["total_users"]) self.total_points = (self.outcomes[0]["total_points"] + self.outcomes[1]["total_points"]) if (self.total_users > 0 and self.outcomes[0]["total_points"] > 0 and self.outcomes[1]["total_points"] > 0): for index in range(0, len(self.outcomes)): self.outcomes[index]["percentage_users"] = float_round( (100 * self.outcomes[index]["total_users"]) / self.total_users) self.outcomes[index]["odds"] = float_round( self.total_points / self.outcomes[index]["total_points"]) self.outcomes[index]["odds_percentage"] = float_round( 100 / self.outcomes[index]["odds"]) self.__clear_outcomes()
def closing_bet_after(self, timestamp): return float_round(self.prediction_window_seconds - self.elapsed(timestamp))
def elapsed(self, timestamp): return float_round((timestamp - self.created_at).total_seconds())