fix: Prevent locals() from polluting player PATCH data dict
Some checks failed
Build Docker Image / build (pull_request) Has been cancelled
Some checks failed
Build Docker Image / build (pull_request) Has been cancelled
CRITICAL BUG FIX - Root cause of Player.data AttributeError
Problem:
The PATCH endpoint was calling locals() AFTER creating data = {}, causing
locals_dict to capture 'data' and 'locals_dict' as variables. The loop then
added these to the data dict itself, resulting in:
data = {'team_id': 549, 'demotion_week': 7, 'data': {}, 'locals_dict': {...}}
When Peewee executed Player.update(**data), it tried to set Player.data = {},
but Player model has no 'data' field, causing AttributeError.
Solution:
1. Call locals() BEFORE creating data dict
2. Exclude 'locals_dict' from the filter (along with 'player_id', 'token')
This ensures only actual player field parameters are included in the update.
Version: 2.5.2 → 2.5.3
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
3421f489ee
commit
6d36704f35
@ -117,12 +117,13 @@ async def patch_player(
|
||||
):
|
||||
"""Patch a player (partial update)."""
|
||||
# Build dict of provided fields
|
||||
data = {}
|
||||
# IMPORTANT: Capture locals() BEFORE creating data dict to avoid including 'data' itself
|
||||
locals_dict = locals()
|
||||
data = {}
|
||||
for key, value in locals_dict.items():
|
||||
if key not in ('player_id', 'token') and value is not None:
|
||||
if key not in ('player_id', 'token', 'locals_dict') and value is not None:
|
||||
data[key] = value
|
||||
|
||||
|
||||
return PlayerService.patch_player(player_id, data, token)
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user