From 12aeb2567faa0f8fa822574e9022e7b743c40cf0 Mon Sep 17 00:00:00 2001 From: Matthias Nagel Date: Wed, 19 Nov 2025 06:05:14 +0100 Subject: [PATCH] =?UTF-8?q?Fix:=20Inkonsistente=20Datenstruktur=20f=C3=BCr?= =?UTF-8?q?=20Inning-Ergebnisse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- calendars/views.py | 25 ++++++++++++++++--------- team_stats/views.py | 16 ++++++++++------ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/calendars/views.py b/calendars/views.py index 7517165..97e74cb 100644 --- a/calendars/views.py +++ b/calendars/views.py @@ -155,21 +155,28 @@ def record_results(request, game_id): if request.method == 'POST': form = GameResultForm(request.POST, game=game, instance=game_result) if form.is_valid(): - inning_results = {} + home_innings = [] + away_innings = [] for i in range(1, game.number_of_innings + 1): - inning_results[f'inning_{i}'] = { - 'home': form.cleaned_data.get(f'inning_{i}_home'), - 'guest': form.cleaned_data.get(f'inning_{i}_guest'), - } - game_result.inning_results = inning_results + home_innings.append(form.cleaned_data.get(f'inning_{i}_home')) + away_innings.append(form.cleaned_data.get(f'inning_{i}_guest')) + + game_result.inning_results = { + 'home': home_innings, + 'away': away_innings + } game_result.save() return redirect('dashboard') else: initial_data = {} if game_result.inning_results: - for inning, scores in game_result.inning_results.items(): - initial_data[f'{inning}_home'] = scores.get('home') - initial_data[f'{inning}_guest'] = scores.get('guest') + home_innings = game_result.inning_results.get('home', []) + away_innings = game_result.inning_results.get('away', []) + 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_fields_by_inning = [] diff --git a/team_stats/views.py b/team_stats/views.py index 00b1b14..1799251 100644 --- a/team_stats/views.py +++ b/team_stats/views.py @@ -25,10 +25,13 @@ def team_statistics(request, team_id): for game in games: result = game.result + print("DEBUGGER:"+str(result)) - home_score = sum(result.inning_results.get('home', [])) - away_score = sum(result.inning_results.get('away', [])) - + home_innings = [inning for inning in result.inning_results.get('home', []) if isinstance(inning, int)] + 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: team_score = home_score opponent_score = away_score @@ -54,9 +57,8 @@ def team_statistics(request, team_id): else: streak_counter = 1 last_game_result = 'loss' - # 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): if i + 1 in inning_runs: inning_runs[i + 1] += runs @@ -79,6 +81,7 @@ def team_statistics(request, team_id): else: pythagorean_pct = 0 + context = { 'team': team, 'wins': wins, @@ -90,5 +93,6 @@ def team_statistics(request, team_id): 'pythagorean_pct': pythagorean_pct, 'inning_runs': inning_runs, } + print("DebuggeR:"+str(context)) - return render(request, 'team_stats/team_statistics.html', context) \ No newline at end of file + return render(request, 'team_stats/team_statistics.html', context)