research/uefa/cycle24/draw24/archive/import_freds_draws.py
2024-01-31 17:12:11 +01:00

132 lines
4.2 KiB
Python
Executable File

# %%
PROJECT_PATH = '/home/md/Work/ligalytics/leagues_stable/'
import os, sys
sys.path.insert(0, PROJECT_PATH)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "leagues.settings")
os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
from leagues import settings
settings.DATABASES['default']['NAME'] = PROJECT_PATH+'/db.sqlite3'
import django
django.setup()
from scheduler.models import *
from scheduler.helpers import *
from pulp import *
import csv
baseScenario = Scenario.objects.filter(season__nicename="UCL 24 - Imported Draws",name="BaseScenario")
# %%
teams = Team.objects.filter(season=baseScenario.season,active=True)
getTeamByID = {
t.id:t for t in teams
}
getTeamIDByName = {
t.name:t.id for t in teams
}
# %%
days = Day.objects.filter(season=baseScenario.season)
# %%
# import team positions
getTeamPos = {}
getTeamByPos = {}
with open('fred_team_ids.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
next(reader, None)
next(reader, None)
for row in reader:
# team_name = row[2]
if row[0] != "":
team_pos = row[0]
team_name = row[1]
getTeamPos[team_name] = team_pos
getTeamByPos[int(team_pos)] = team_name
# %%
# import draws
current_draw = None
current_scenario = None
gamereqs = []
sol_solution = ""
getTeamPos = {}
with open('fred_simulation.csv', newline='') as csvfile:
reader = csv.reader(csvfile)
next(reader, None)
# next(reader, None)
for row in reader:
# team_name = row[2]
draw = row[0]
if not current_draw or draw != current_draw:
if current_scenario:
current_scenario.name = "Fred: "+current_draw
current_scenario.sol_solution = sol_solution[:-2]
current_scenario.save()
GameRequirement.objects.filter(scenario=current_scenario).delete()
GameRequirement.objects.bulk_create(gamereqs)
print("SAVED SCENARIO", current_scenario.name )
print("STARTING A NEW DRAW/SCENARIO", draw)
current_draw = draw
current_scenario = copy_scenario(baseScenario)
sol_solution = ""
gamereqs = []
team_name = row[1]
# sol_solution = 825_167_198_1_Late_None_None__
team_matches = {}
for md in range(1,9):
team_matches[md] = int(row[3+md])
for g,o in team_matches.items():
if o > 0:
game_hometeam = getTeamIDByName[team_name]
game_awayteam = getTeamIDByName[getTeamByPos[abs(o)]]
else:
game_awayteam = getTeamIDByName[team_name]
game_hometeam = getTeamIDByName[getTeamByPos[abs(o)]]
game_round = g
game_day = days.filter(round=g).first().id
game_time = "Late"
# if o < 0:
# print("\t\tA",g,getTeamByPos[abs(o)],getTeamIDByName[getTeamByPos[abs(o)]])
# else:
# print("\t\tH",g,getTeamByPos[abs(o)],getTeamIDByName[getTeamByPos[abs(o)]])
# # print("\t\t",game_round,game_day,game_time,game_hometeam,game_awayteam)
sol_solution += "{}_{}_{}_{}_{}_None_None__".format(game_day,game_hometeam,game_awayteam,game_round,game_time)
current_scenario.sol_solution = sol_solution
team1 = getTeamByID[game_hometeam]
team2 = getTeamByID[game_awayteam]
gamereqs.append(GameRequirement(season=current_scenario.season,scenario=current_scenario,team1=team1,team2=team2,number=1))
if current_scenario:
current_scenario.name = "Fred: "+current_draw
current_scenario.sol_solution = sol_solution[:-2]
current_scenario.save()
GameRequirement.objects.filter(scenario=current_scenario).delete()
GameRequirement.objects.bulk_create(gamereqs)
print("SAVED SCENARIO", current_scenario.name )
# %%