Coverage for src/utils/tournaments_info.py: 0%

28 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2025-06-03 19:06 +0000

1import json 

2 

3import pandas as pd 

4from dateutil import parser 

5 

6from src.api import spl 

7from src.static.static_values_enum import RatingLevel 

8from src.utils import store_util 

9 

10 

11def get_tournaments_info(username, start_date, end_date): 

12 collect = pd.DataFrame() 

13 tournaments_ids = spl.get_player_tournaments_ids(store_util.get_token_dict(username)) 

14 for tournament_id in tournaments_ids: 

15 tournament = spl.get_tournament(tournament_id) 

16 

17 if tournament['status'] == 2 and tournament['rounds'][-1]['status'] == 2: 

18 date_time = parser.parse(str(tournament['rounds'][-1]['start_date'])) 

19 

20 if parser.parse(start_date) <= date_time <= parser.parse(end_date): 

21 player_data = list(filter(lambda item: item['player'] == username, tournament['players'])) 

22 # If player did not leave and is found continue 

23 if player_data: 

24 player_data = player_data[0] 

25 

26 prize_qty = "0" 

27 prize_type = "" 

28 if player_data['prize']: 

29 prize_qty = player_data['prize'] 

30 else: 

31 if player_data['ext_prize_info']: 

32 prize_info = json.loads(player_data['ext_prize_info']) 

33 prize_qty = prize_info[0]['qty'] 

34 prize_type = prize_info[0]['type'] 

35 

36 tournament_record = { 

37 'name': tournament['name'], 

38 'league': RatingLevel(tournament['data']['rating_level']).name, 

39 'num_players': tournament['num_players'], 

40 'finish': player_data['finish'], 

41 'wins': player_data['wins'], 

42 'losses': player_data['losses'], 

43 'draws': player_data['draws'], 

44 'entry_fee': player_data['fee_amount'], 

45 'prize_qty': prize_qty, 

46 'prize_type': prize_type 

47 } 

48 collect = pd.concat([collect, pd.DataFrame(tournament_record, index=[0])], ignore_index=True) 

49 return collect