def get(self, id, pair_no): ''' Returns the opaque pair ID for pair with pair nubmer pair_no in this Tournament. Args: id: Tournament ID for this tournament. pair_no: The pair number whose ID has to be looked up. ''' if not is_int(pair_no): SetErrorStatus( self.response, 404, "Invalid Pair Number", "Pair number must be an integer, was {}".format(pair_no)) return tourney = GetTourneyWithIdAndMaybeReturnStatus(self.response, id) if not tourney: return if not CheckUserOwnsTournamentAndMaybeReturnStatus( self.response, users.get_current_user(), tourney): return player_pairs = PlayerPair._query( ndb.GenericProperty('pair_no') == int(pair_no), ancestor=tourney.key).fetch(1, projection=[PlayerPair.id]) if not player_pairs: SetErrorStatus( self.response, 404, "Invalid Id", "Pair pair number {} does not exist in this " + "tournament".format(pair_no)) return self.response.headers['Content-Type'] = 'application/json' self.response.set_status(200) self.response.out.write( json.dumps({'pair_id': player_pairs[0].id}, indent=2))
def _CheckValidPairMaybeSetStatus(self, tourney, pair_no): ''' Test if the provided pair number is valid for tourney. Args: tourney: Tournament. Tournament the pair number is being validated for. pair_no: Integer. Pair number for the team we are validating. ''' error = "Invalid Input" if (not is_int(pair_no)) or int(pair_no) < 1 or int(pair_no) > tourney.no_pairs: SetErrorStatus(self.response, 404, error, "Pair number {} is invalid".format(pair_no)) return False return True
def get(self, id, board_no): '''Gets all the scored results for a particular hand in the tournament. Args: id: String. Tournament id. board_no: Integer. Hand number. See api for request and response documentation. ''' tourney = GetTourneyWithIdAndMaybeReturnStatus(self.response, id) if not tourney: return if (not is_int(board_no) ) or int(board_no) < 1 or int(board_no) > tourney.no_boards: SetErrorStatus(self.response, 404, "Invalid Hand Parameters", "Board number {} is invalid".format(board_no)) return has_access, pair_no, all_matchups = self._CheckUserHasAccessMaybeSetStatus( tourney, int(board_no)) if not has_access: return position = self.request.headers.get('X-position') if not self._CheckValidPositionAndMaybeSetStatus(position): return scores = self._GetAllPlayedScores(tourney, int(board_no), all_matchups) if not self._CheckPlayerScoredHandsAndMaybeSetStatus( pair_no, all_matchups, scores): return list_of_results = self._ScoresToJson(position, scores, all_matchups) self.response.headers['Content-Type'] = 'application/json' self.response.set_status(200) self.response.out.write( json.dumps({"results": list_of_results}, indent=2))