123 lines
2.9 KiB
Python
Executable File
123 lines
2.9 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 pulp import *
|
|
|
|
from django.urls import get_resolver
|
|
from django_tex.shortcuts import render_to_pdf
|
|
|
|
|
|
from common import urls
|
|
from referees import urls
|
|
from qualifiers import urls
|
|
|
|
from django.core.handlers.base import BaseHandler
|
|
from django.test.client import RequestFactory
|
|
from scheduler.widgets import widget_context_games_reduced
|
|
|
|
|
|
|
|
# %%
|
|
|
|
scenario = Scenario.objects.get(id=14)
|
|
|
|
dayObjects = Day.objects.filter(season=scenario.season)
|
|
rounds = dict(scenario.gamesOfRound()).keys()
|
|
teams = scenario.teams_dict()
|
|
timeslots = {str(t.id):t.name for t in scenario.season.timeslots.all()}
|
|
|
|
getTeamById = {}
|
|
teamObj = Team.objects.filter(season=scenario.season)
|
|
|
|
for t in teamObj:
|
|
getTeamById[str(t.id)] = t
|
|
if (t.logo.name.split('.')[-1] != 'png'):
|
|
os.rename(f'{t.logo.path}',f'{t.logo.path}.png')
|
|
t.logo.name = f'{t.logo.name}.png'
|
|
t.save()
|
|
|
|
# %%
|
|
|
|
getDayById = {}
|
|
for d in dayObjects:
|
|
getDayById[d.id] = d
|
|
|
|
list_games = []
|
|
list_rounds = {r:defaultdict(lambda:[]) for r in rounds}
|
|
list_days = defaultdict(lambda:[])
|
|
games = {}
|
|
cntr = 0
|
|
|
|
x_pos = 0
|
|
y_pos = 0
|
|
last_y_pos = 0
|
|
page_break = 9999
|
|
|
|
for r in rounds:
|
|
games[r] = widget_context_games_reduced(scenario,r)
|
|
games_per_round = 0
|
|
|
|
if last_y_pos + sum([len(i) for i in games[1]['gamesOfDay'].values()]) > 60:
|
|
page_break = x_pos
|
|
last_y_pos = 0
|
|
x_pos = 0
|
|
|
|
y_pos = last_y_pos+10
|
|
|
|
for day,gamesPerDay in games[r]['gamesOfDay'].items():
|
|
if not gamesPerDay:
|
|
continue
|
|
for game in gamesPerDay:
|
|
games_per_round += 1
|
|
cntr += 1
|
|
t1 = getTeamById[game[1]]
|
|
t2 = getTeamById[game[2]]
|
|
game_details = (f'{cntr}','',f'\includegraphics[width=0.2cm]{{{t1.logo.path}}}',f'{t1.shortname}', f'\includegraphics[width=0.2cm]{{{t2.logo.path}}}', f'{t2.shortname}',x_pos % 5,y_pos,game[4])
|
|
list_games.append(game_details)
|
|
list_rounds[r][(day,str(getDayById[day]))].append(game_details)
|
|
list_days[str(getDayById[day])].append(game_details)
|
|
y_pos += 1
|
|
y_pos += 3
|
|
x_pos += 1
|
|
|
|
if x_pos % 5 == 0:
|
|
last_y_pos = y_pos
|
|
|
|
if x_pos >= page_break:
|
|
last_y_pos = 0
|
|
x_pos = 0
|
|
|
|
|
|
|
|
# %%
|
|
|
|
|
|
template_name = 'latex/season_overview.tex'
|
|
context = {
|
|
'scenario': scenario,
|
|
'rounds': list_rounds,
|
|
'page_break':page_break,
|
|
}
|
|
response = render_to_pdf(None, template_name, context, filename='test.pdf')
|
|
|
|
|
|
|
|
with open("response.pdf", "wb") as f:
|
|
f.write(response.content)
|
|
# %%
|
|
|