def add_from_voidstate(): try: voidstate_id = request.args.get('voidstate_id') tourney_id = request.args.get('tourney_id') tourney_list_id = request.args.get('tourney_list_id') pm = PersistenceManager(myapp.db_connector) tourney_list = pm.get_tourney_list(tourney_list_id) fetcher = VoidStateXWSFetcher() xws = fetcher.fetch(voidstate_id) converter = XWSToJuggler(xws) converter.convert( pm, tourney_list ) pm.db_connector.get_session().commit() return jsonify(tourney_id=tourney_id, tourney_list_id=tourney_list.id) except Exception, e: mail_error( "Unable to fetch from voidstate for id " + voidstate_id + ", reason: " + str(e)) response = jsonify(message=str(e)) response.status_code = (500) return response
def create_tourney(cryodex, tourney_name, tourney_date, tourney_type, round_length, sets_used, country, state, city, venue, email, participant_count, tourney_format): pm = PersistenceManager(myapp.db_connector) t = Tourney(tourney_name=tourney_name, tourney_date=tourney_date, tourney_type=tourney_type, round_length=round_length, email=email, entry_date=datetime.datetime.now(), participant_count=participant_count, locked=False, format=tourney_format) pm.db_connector.get_session().add(t) #add the players players = {} lists = {} for player in cryodex.players.keys(): tp = TourneyPlayer( tourney=t, player_name=player) tlist = TourneyList(tourney=t, player=tp) pm.db_connector.get_session().add(tlist) players[player] = tp lists[player] = tlist pm.db_connector.get_session().commit() for round_type in cryodex.rounds.keys(): rounds = cryodex.rounds[round_type] for round in rounds: tr = TourneyRound(round_num=int(round.number), round_type=round.get_round_type(), tourney=t) pm.db_connector.get_session().add(tr) for round_result in round.results: rr = None if round_result.bye: p1_tourney_list = lists[ round_result.player1 ] rr = RoundResult(round=tr, list1=p1_tourney_list, list2=None, winner=None, loser=None, list1_score=None, list2_score=None, bye=round_result.bye, draw=round_result.draw) else: p1_tourney_list = lists[round_result.player1] p2_tourney_list = None p2_tourney_list = lists[round_result.player2] winner = None loser = None if round_result.player1 == round_result.winner: winner = p1_tourney_list loser = p2_tourney_list else: winner = p2_tourney_list loser = p1_tourney_list rr = RoundResult(round=tr, list1=p1_tourney_list, list2=p2_tourney_list, winner=winner, loser=loser, list1_score=round_result.player1_score, list2_score=round_result.player2_score, bye=round_result.bye, draw=round_result.draw) pm.db_connector.get_session().add(rr) add_sets_and_venue_to_tourney(city, country, pm, sets_used, state, t, venue) #finally load the rankings for rank in cryodex.ranking.rankings: r = TourneyRanking(tourney=t, player=players[rank.player_name], rank=rank.rank, elim_rank=rank.elim_rank, mov=rank.mov, sos=rank.sos, score=rank.score, dropped=rank.dropped) pm.db_connector.get_session().add(r) pm.db_connector.get_session().commit() if rank.list_id is not None and len(rank.list_id) > 0: #cryodex provided a list id ... load it try: tourney_list = lists[rank.player_name] fetcher = VoidStateXWSFetcher() xws = fetcher.fetch(rank.list_id) converter = XWSToJuggler(xws) converter.convert(pm, tourney_list) except Exception as err: print ("unable to fetch list id " + rank.list_id + " from voidstate, reason: " + str(err) ) mail_error(errortext=str(err) + "<br><br>Unable to fetch list id " + rank.list_id + " from voidstate" ) #and commit all the work pm.db_connector.get_session().commit() return t