Merge pull request 'fix: Resolve Player.data AttributeError in patch_player endpoint' (#3) from fix/player-data-attribute-error into main
All checks were successful
Build Docker Image / build (push) Successful in 1m8s
All checks were successful
Build Docker Image / build (push) Successful in 1m8s
Reviewed-on: #3
This commit is contained in:
commit
3421f489ee
@ -450,15 +450,24 @@ class PlayerService(BaseService):
|
||||
if isinstance(player, dict):
|
||||
return {k: v for k, v in player.items() if k not in cls.EXCLUDED_FIELDS}
|
||||
|
||||
# Try to convert Peewee model
|
||||
# Try to convert Peewee model with foreign key recursion
|
||||
try:
|
||||
player_dict = model_to_dict(player, recurse=recurse)
|
||||
# Use backrefs=False to avoid circular reference issues
|
||||
player_dict = model_to_dict(player, recurse=recurse, backrefs=False)
|
||||
# Filter out excluded fields
|
||||
return {k: v for k, v in player_dict.items() if k not in cls.EXCLUDED_FIELDS}
|
||||
except ImportError:
|
||||
# Fall back to basic dict conversion
|
||||
player_dict = dict(player)
|
||||
return {k: v for k, v in player_dict.items() if k not in cls.EXCLUDED_FIELDS}
|
||||
except (ImportError, AttributeError, TypeError) as e:
|
||||
# Log the error and fall back to non-recursive serialization
|
||||
logger.warning(f"Error in recursive player serialization: {e}, falling back to non-recursive")
|
||||
try:
|
||||
# Fallback to non-recursive serialization
|
||||
player_dict = model_to_dict(player, recurse=False)
|
||||
return {k: v for k, v in player_dict.items() if k not in cls.EXCLUDED_FIELDS}
|
||||
except Exception as fallback_error:
|
||||
# Final fallback to basic dict conversion
|
||||
logger.error(f"Error in non-recursive serialization: {fallback_error}, using basic dict")
|
||||
player_dict = dict(player)
|
||||
return {k: v for k, v in player_dict.items() if k not in cls.EXCLUDED_FIELDS}
|
||||
|
||||
@classmethod
|
||||
def update_player(
|
||||
|
||||
Loading…
Reference in New Issue
Block a user