132 lines
4.2 KiB
Python
Executable File
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 )
|
|
|
|
|
|
|
|
# %%
|