Fix: Inkonsistente Datenstruktur für Inning-Ergebnisse

Die Datenstruktur für die Inning-Ergebnisse (`inning_results`) war in der `record_results`-View (`calendars/views.py`) und der `team_statistics`-View (`team_stats/views.py`) inkonsistent.

In `calendars/views.py` wurde eine verschachtelte Struktur mit `inning_` als Schlüssel verwendet, während in `team_stats/views.py` eine Struktur mit 'home'- und 'away'-Listen erwartet wurde.

Diese Inkonsistenz führte dazu, dass die Inning-Ergebnisse in der Team-Statistik nicht korrekt angezeigt wurden.

Der Fix vereinheitlicht die Datenstruktur, sodass die `record_results`-View die Ergebnisse in dem von der `team_statistics`-View erwarteten Format speichert. Zudem wurde die Logik zum Laden der Formulardaten in `record_results` angepasst.
This commit is contained in:
Matthias Nagel 2025-11-19 06:05:14 +01:00
parent 56e7393524
commit 12aeb2567f
2 changed files with 26 additions and 15 deletions

View File

@ -155,21 +155,28 @@ def record_results(request, game_id):
if request.method == 'POST': if request.method == 'POST':
form = GameResultForm(request.POST, game=game, instance=game_result) form = GameResultForm(request.POST, game=game, instance=game_result)
if form.is_valid(): if form.is_valid():
inning_results = {} home_innings = []
away_innings = []
for i in range(1, game.number_of_innings + 1): for i in range(1, game.number_of_innings + 1):
inning_results[f'inning_{i}'] = { home_innings.append(form.cleaned_data.get(f'inning_{i}_home'))
'home': form.cleaned_data.get(f'inning_{i}_home'), away_innings.append(form.cleaned_data.get(f'inning_{i}_guest'))
'guest': form.cleaned_data.get(f'inning_{i}_guest'),
} game_result.inning_results = {
game_result.inning_results = inning_results 'home': home_innings,
'away': away_innings
}
game_result.save() game_result.save()
return redirect('dashboard') return redirect('dashboard')
else: else:
initial_data = {} initial_data = {}
if game_result.inning_results: if game_result.inning_results:
for inning, scores in game_result.inning_results.items(): home_innings = game_result.inning_results.get('home', [])
initial_data[f'{inning}_home'] = scores.get('home') away_innings = game_result.inning_results.get('away', [])
initial_data[f'{inning}_guest'] = scores.get('guest') for i in range(game.number_of_innings):
if i < len(home_innings):
initial_data[f'inning_{i+1}_home'] = home_innings[i]
if i < len(away_innings):
initial_data[f'inning_{i+1}_guest'] = away_innings[i]
form = GameResultForm(game=game, instance=game_result, initial=initial_data) form = GameResultForm(game=game, instance=game_result, initial=initial_data)
form_fields_by_inning = [] form_fields_by_inning = []

View File

@ -25,10 +25,13 @@ def team_statistics(request, team_id):
for game in games: for game in games:
result = game.result result = game.result
print("DEBUGGER:"+str(result))
home_score = sum(result.inning_results.get('home', [])) home_innings = [inning for inning in result.inning_results.get('home', []) if isinstance(inning, int)]
away_score = sum(result.inning_results.get('away', [])) away_innings = [inning for inning in result.inning_results.get('away', []) if isinstance(inning, int)]
home_score = sum(home_innings)
away_score = sum(away_innings)
print("HOMEINNING:"+str(home_innings))
if game.is_home_game: if game.is_home_game:
team_score = home_score team_score = home_score
opponent_score = away_score opponent_score = away_score
@ -54,9 +57,8 @@ def team_statistics(request, team_id):
else: else:
streak_counter = 1 streak_counter = 1
last_game_result = 'loss' last_game_result = 'loss'
# Inning Heatmap # Inning Heatmap
team_innings = result.inning_results.get('home' if game.is_home_game else 'away', []) team_innings = home_innings if game.is_home_game else away_innings
for i, runs in enumerate(team_innings): for i, runs in enumerate(team_innings):
if i + 1 in inning_runs: if i + 1 in inning_runs:
inning_runs[i + 1] += runs inning_runs[i + 1] += runs
@ -79,6 +81,7 @@ def team_statistics(request, team_id):
else: else:
pythagorean_pct = 0 pythagorean_pct = 0
context = { context = {
'team': team, 'team': team,
'wins': wins, 'wins': wins,
@ -90,5 +93,6 @@ def team_statistics(request, team_id):
'pythagorean_pct': pythagorean_pct, 'pythagorean_pct': pythagorean_pct,
'inning_runs': inning_runs, 'inning_runs': inning_runs,
} }
print("DebuggeR:"+str(context))
return render(request, 'team_stats/team_statistics.html', context) return render(request, 'team_stats/team_statistics.html', context)