research/uefa/scripts/uefa_uecl24_seeder.py
2024-01-31 21:41:29 +01:00

191 lines
9.0 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'
# settings.DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
# settings.DATABASES['default']['HOST'] = '0.0.0.0'
# settings.DATABASES['default']['PORT'] = '5432'
# settings.DATABASES['default']['USER'] = 'postgres'
# settings.DATABASES['default']['PASSWORD'] = 'secret123'
# settings.DATABASES['default']['NAME'] = 'mypgsqldb'
# settings.DATABASES['default']['ATOMIC_REQUESTS'] = False
# settings.DATABASES['default']['AUTOCOMMIT'] = True
# settings.DATABASES['default']['CONN_MAX_AGE'] = 0
# settings.DATABASES['default']['CONN_HEALTH_CHECKS'] = False
# settings.DATABASES['default']['OPTIONS'] = {}
os.environ["XPRESSDIR"] = "/opt/xpressmp"
os.environ["XPRESS"] = "/opt/xpressmp/bin"
os.environ["LD_LIBRARY_PATH"] = os.environ["XPRESSDIR"] + "/lib"
os.environ["DYLD_LIBRARY_PATH"] = os.environ["XPRESSDIR"] + "/lib"
os.environ["SHLIB_PATH"] = os.environ["XPRESSDIR"] + "/lib"
os.environ["LIBPATH"] = os.environ["XPRESSDIR"] + "/lib"
os.environ["PYTHONPATH"] = os.environ["XPRESSDIR"] + "/lib"
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprs.jar"
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprb.jar" + os.pathsep + os.environ["CLASSPATH"]
os.environ["CLASSPATH"] = os.environ["XPRESSDIR"] + "/lib/xprm.jar" + os.pathsep + os.environ["CLASSPATH"]
os.environ["PATH"] = os.environ["XPRESSDIR"] + "/bin" + os.pathsep + os.environ["PATH"]
import django
django.setup()
from django.shortcuts import HttpResponseRedirect
from django.http import HttpResponse, JsonResponse
from django.utils import timezone
from django.urls import reverse
from django.core.files.storage import FileSystemStorage
from django.core.mail import send_mail
from django_tex.shortcuts import render_to_pdf
from celery.result import AsyncResult
import googlemaps
import timeit
import random
import json
import builtins as __builtin__
import csv
from leagues.celery import celery
from leagues.settings import EMAIL_DEFAULT_FROM, EMAIL_DEFAULT_TO
from leagues.settings import RUN_ENV, INSTANCE, DEBUG
from common.tasks import log_telegram
from common.functions import *
from scheduler.models import *
from scheduler.helpers import *
from scheduler.widgets import widget_context_kpis
from scheduler.solver.optimizer import optimize_2phases, optimize_sequentially
import scheduler.solver.optimizer as so
from draws.solver import optimize_draws
import time as timer
from qualifiers.helpers import import_globals
# %%
scenario = Scenario.objects.get(id=3)
# import_globals(scenario.season.id)
# teams = scenario.season.scheduler_teams.all()
# %%
new_teams = []
new_teams.append(("Pot 1", 1, "Tottenham Hotspur (ENG)", 80.000, 5,5 ))
new_teams.append(("Pot 1", 2, "Eintracht Frankfurt (GER)", 77.000, 5,5 ))
new_teams.append(("Pot 1", 3, "Club Brugge (BEL)", 54.000, 2,5 ))
new_teams.append(("Pot 1", 4, "FC Basel 1893 (SUI)", 53.000, 3,5 ))
new_teams.append(("Pot 1", 5, "KAA Gent (BEL)", 37.500, 1,4 ))
new_teams.append(("Pot 1", 6, "Fenerbahçe SK (TUR)", 30.000, 3,5 ))
new_teams.append(("Pot 2", 7, "AS Monaco FC (FRA)", 29.000, 4,5 ))
new_teams.append(("Pot 2", 8, "CFR 1907 Cluj (ROU)", 27.500, 1,5 ))
new_teams.append(("Pot 2", 9, "FC Midtjylland (DEN)", 25.500, 1,5 ))
new_teams.append(("Pot 2", 10, "PAOK FC (GRE)", 25.000, 1,3 ))
new_teams.append(("Pot 2", 11, "ŠK Slovan Bratislava (SVK)", 24.500, 1,5 ))
new_teams.append(("Pot 2", 12, "Maccabi Tel-Aviv FC (ISR)", 24.000, 1,5 ))
new_teams.append(("Pot 3", 13, "FC Viktoria Plzeň (CZE)", 22.000, 2,4 ))
new_teams.append(("Pot 3", 14, "PFC Ludogorets 1945 (BUL)", 21.000, 1,5 ))
new_teams.append(("Pot 3", 15, "FK Bodø/Glimt (NOR)", 20.000, 2,5 ))
new_teams.append(("Pot 3", 16, "CA Osasuna (ESP)", 18.599, 3,3 ))
new_teams.append(("Pot 3", 17, "KRC Genk (BEL)", 18.000, 1,4 ))
new_teams.append(("Pot 3", 18, "FC Bologna (ITA)", 16.385, 3,3 ))
new_teams.append(("Pot 4", 19, "FC Zorya Luhansk (UKR)", 16.000, 1,3 ))
new_teams.append(("Pot 4", 20, "FC Astana (KAZ)", 14.000, 1,5 ))
new_teams.append(("Pot 4", 21, "Beşiktaş (TUR)", 14.000, 3,5 ))
new_teams.append(("Pot 4", 22, "FK Žalgiris Vilnius (LTU)", 11.000, 1,5 ))
new_teams.append(("Pot 4", 23, "HJK Helsinki (FIN)", 11.000, 1,5 ))
new_teams.append(("Pot 4", 24, "FC Flora Tallinn (EST)", 10.500, 1,5 ))
new_teams.append(("Pot 5", 25, "Legia Warszawa (POL)", 11.000, 1,5 ))
new_teams.append(("Pot 5", 26, "FC Spartak Trnava (SVK)", 10.500, 1,4 ))
new_teams.append(("Pot 5", 27, "NK Olimpija Ljubljana (SVN)", 9.000, 1,5 ))
new_teams.append(("Pot 5", 28, "HŠK Zrinjski (BIH)", 8.500, 1,5 ))
new_teams.append(("Pot 5", 29, "Dnipro-1 (UKR)", 8.000, 1,3 ))
new_teams.append(("Pot 5", 30, "KÍ Klaksvík (FRO)", 8.000, 1,5 ))
new_teams.append(("Pot 6", 31, "Aberdeen FC (SCO)", 8.000, 2,3 ))
new_teams.append(("Pot 6", 32, "FK Čukarički (SRB)", 6.475, 1,5 ))
new_teams.append(("Pot 6", 33, "FC Lugano (SUI)", 6.335, 1,3 ))
new_teams.append(("Pot 6", 34, "Breidablik (ISL)", 6.000, 1,5 ))
new_teams.append(("Pot 6", 35, "FC Nordsjælland (DEN)", 5.565, 1,5 ))
new_teams.append(("Pot 6", 36, "Ballkani (KOS)", 3.000, 1,5 ))
CET_minus_1 = ['ENG','POR','SCO']
CET_plus_1 = ['TUR','AZE','ISR','UKR']
# %%
for conf in Conference.objects.filter(scenario=scenario).exclude(name__in=['HARD Constraints','SOFT Constraints']):
conf.teams.clear()
conf.collapseInView = True
conf.save()
Team.objects.filter(season=scenario.season).update(active=False)
for t in new_teams:
team_name = t[2].split('(')[0].strip()
team_country = t[2].split('(')[1].split(')')[0].strip()
global_coeff = t[4]
domestic_coeff = t[5]
pot = int(t[0].split(' ')[1].strip())
pos = int(t[1])
teamObj = Team.objects.filter(season=scenario.season,name=team_name)
if teamObj:
pass
else:
print(t,"->", team_name)
gteam = GlobalTeam.objects.filter(name=team_name)
if gteam:
new_t = Team.objects.create(season=scenario.season,
name=team_name,
attractivity=global_coeff,
position=pos,
pot=pot,
latitude=gteam.first().latitude,
longitude=gteam.first().longitude,
country=gteam.first().country,
active=True)
print("\tCreated team from global", team_name)
teamObj = Team.objects.filter(season=scenario.season,name=team_name)
else:
print("\tTeam not found", team_name)
continue
Conference.objects.filter(scenario=scenario,name="UECL").first().teams.add(teamObj.first())
Conference.objects.filter(scenario=scenario,name=t[0]).first().teams.add(teamObj.first())
# if global_coeff in [3,4,5]:
# Conference.objects.filter(scenario=scenario,name=f"Global Coeff {global_coeff}").first().teams.add(teamObj.first())
# if domestic_coeff in [3,5]:
# Conference.objects.filter(scenario=scenario,name=f"Domestic Coeff {domestic_coeff}").first().teams.add(teamObj.first())
if team_country in CET_minus_1:
Conference.objects.filter(scenario=scenario,name="CET-1").first().teams.add(teamObj.first())
elif team_country in CET_plus_1:
Conference.objects.filter(scenario=scenario,name="CET+1").first().teams.add(teamObj.first())
else:
Conference.objects.filter(scenario=scenario,name="CET").first().teams.add(teamObj.first())
teamObj.update(active=True)
teamObj.update(attractivity=global_coeff)
teamObj.update(position=pos)
teamObj.update(pot=pot)
# %%