diff --git a/VERSION b/VERSION index 73462a5..f225a78 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.5.1 +2.5.2 diff --git a/app/services/player_service.py b/app/services/player_service.py index 22d5129..f9c9851 100644 --- a/app/services/player_service.py +++ b/app/services/player_service.py @@ -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(