research/referees/scripts/solve_metalligen.py
2024-10-15 10:41:25 +02:00

271 lines
8.0 KiB
Python

# %%
# Wichtiger Header + Xpress
"""
##############################################################################################################
"""
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()
import csv
"""
##############################################################################################################
"""
# %%
from scheduler.models import *
from referees.models import *
scenario = Scenario.objects.get(id=10991)
season= scenario.season
# Day.objects.filter(season=scenario.season).delete()
# %%
from referees.optimize import optimize_wales
optimize_wales(scenario.id, "user_name", True)
# %%
# %%
# %%
# %%
# %%
# %%
# with open('referees/fixtures/metalligen2425/2425_arenas.csv','r') as f:
# reader = csv.reader(f)
# next(reader)
# for row in reader:
# print(row)
# latitude,longitude = row[3].replace(',','.').split(' ')
# print(latitude,longitude)
# Location.objects.get_or_create(season=scenario.season, name=row[1], city=row[4], latitude=latitude, longitude=longitude)
# # %%
# Role.objects.get_or_create(season=scenario.season,name='Referee',order=0,min_required=2,max_required=2)
# Role.objects.get_or_create(season=scenario.season,name='Linesperson',order=1,min_required=2,max_required=2)
# Category.objects.get_or_create(season=scenario.season,name='A',order=0)
# Category.objects.get_or_create(season=scenario.season,name='B',order=1)
# Category.objects.get_or_create(season=scenario.season,name='C',order=2)
# # %%
# import googlemaps
# gmaps = googlemaps.Client(
# key='AIzaSyB76EhR4OqjdXHQUiTkHZC0Svx_7cPGqyU')
# with open('referees/fixtures/metalligen2425/2425_officials.csv','r') as f:
# reader = csv.reader(f)
# next(reader)
# for row in reader:
# print(row)
# id = row[0]
# name = row[1]
# zip_code = row[2]
# city = row[3]
# region = row[4]
# role= row[5]
# category = row[6]
# target_games = row[7]
# geocode_result = gmaps.geocode(city+" "+zip_code)
# if len(geocode_result) > 0:
# location = geocode_result[0]['geometry']['location']
# print("\t", location)
# else:
# location = {'lat': 0, 'lng': 0}
# print("\t", "NOT FOUND")
# delegate, created = Delegate.objects.get_or_create(season=scenario.season,
# category= Category.objects.filter(season=scenario.season,name=category).first(),
# name= name,
# latitude= location['lat'],
# longitude= location['lng'],
# )
# location, created = Location.objects.get_or_create(season=scenario.season,
# name=city,
# city=city,
# type=3,
# latitude=location['lat'],
# longitude=location['lng'])
# delegate.location = location
# delegate.save()
# Delegate.objects.filter(season=scenario.season).update(country=Country.objects.get(season=scenario.season,name='Denmark'))
# %%
# competition, created = Competition.objects.get_or_create(season=season,name='Metalligen 2425')
# # %%
# RefGame.objects.filter(scenario=scenario).delete()
# with open('referees/fixtures/metalligen2425/2425_schedule.csv','r') as f:
# reader = csv.reader(f)
# next(reader)
# for row in reader:
# # print(row)
# day = datetime.datetime.strptime(row[2],'%m/%d/%Y')
# date, created = Day.objects.get_or_create(
# season=season,
# date=day,
# day=day.strftime("%d-%m-%Y")
# )
# time = row[4]
# timeslot, created = TimeSlot.objects.get_or_create(
# season=season,
# name=time,
# start=time,
# )
# gameID = row[6]
# homeTeam = Team.objects.filter(season=season,name=row[7]).first()
# awayTeam = Team.objects.filter(season=season,name=row[8]).first()
# if not homeTeam and awayTeam:
# print("ERROR: ", row)
# continue
# arena = Location.objects.filter(season=season,name=row[9]).first()
# RefGame.objects.get_or_create(
# homeTeam=homeTeam,
# awayTeam=awayTeam,
# scenario=scenario,
# timeslot=timeslot,
# day=date,
# location=arena,
# competition=competition,
# )
# # %%
# Day.objects.filter(season=season).update(round=1)
# %%
# teams = Team.objects.filter(season=season)
# firstday = Day.objects.filter(season=season).order_by('date').first()
# lastday = Day.objects.filter(season=season).order_by('date').last()
# print(firstday.date, lastday.date)
# # %%
# RefWish.objects.filter(scenario=scenario).delete()
# with open('referees/fixtures/metalligen2425/2425_officials.csv','r') as f:
# reader = csv.reader(f)
# next(reader)
# for row in reader:
# print(row)
# id = row[0]
# name = row[1]
# zip_code = row[2]
# city = row[3]
# region = row[4]
# role= row[5]
# category = row[6]
# target_games = row[7]
# delegate = Delegate.objects.filter(season=season,name=name).first()
# wish = RefWish.objects.create(
# scenario=scenario,
# startFirstDay=True,
# endLastDay=True,
# day=firstday,
# day2=lastday,
# minGames=target_games,
# maxGames=target_games,
# reason=f'Target {target_games} Games for {delegate.name} ({delegate.category.name})',
# prio='A'
# )
# wish.teams.add(*teams)
# wish.delegates.add(delegate)
# # # %%
# for d in Day.objects.filter(season=season):
# d.day = d.date.strftime("%Y-%m-%d")
# d.save()
# # date=day,
# # day=day.strftime("%d-%m-%Y")
# # %%
# for r in Requirement.objects.filter(season=season):
# print(r.competition,r.role,r.classification)
# # %%
# game = RefGame.objects.filter(scenario=scenario).first()
# # %%
# for a in Assignment.objects.filter(game=game):
# print(a.game,a.role,a.delegate)
# # %%
# Delegate.objects.filter(season=season,roles__isnull=True).delete()
# # %%
# %%