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:
parent
56e7393524
commit
12aeb2567f
@ -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'),
|
||||
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.inning_results = inning_results
|
||||
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 = []
|
||||
|
||||
@ -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)
|
||||
Loading…
x
Reference in New Issue
Block a user