Исправлена ошибка MissingGreenlet в use_skip_exile

Убрана проверка assignment.challenge, которая вызывала lazy loading
в асинхронном контексте. Теперь всегда выполняется явный запрос
для получения game_id из Challenge.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-24 10:15:53 +03:00
parent 765da3c37f
commit 7b1490dec8

View File

@@ -138,16 +138,12 @@ class ConsumablesService:
if assignment.is_playthrough: if assignment.is_playthrough:
game_id = assignment.game_id game_id = assignment.game_id
else: else:
# Need to load challenge to get game_id # Load challenge to get game_id
if assignment.challenge: result = await db.execute(
game_id = assignment.challenge.game_id select(Challenge).where(Challenge.id == assignment.challenge_id)
else: )
# Load challenge if not already loaded challenge = result.scalar_one()
result = await db.execute( game_id = challenge.game_id
select(Challenge).where(Challenge.id == assignment.challenge_id)
)
challenge = result.scalar_one()
game_id = challenge.game_id
# Check if game is already exiled # Check if game is already exiled
existing = await db.execute( existing = await db.execute(