From 09cb9f5fa9fbe9d44b0dae25ef155b5eb25f42b6 Mon Sep 17 00:00:00 2001 From: ivannoskov Date: Wed, 21 Jan 2026 23:54:16 +0300 Subject: [PATCH] fix: set creative_id nullable in placement creation --- src/usecase/purchase/create_placements.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/usecase/purchase/create_placements.py b/src/usecase/purchase/create_placements.py index 4cb3ba7..706f73b 100644 --- a/src/usecase/purchase/create_placements.py +++ b/src/usecase/purchase/create_placements.py @@ -90,17 +90,20 @@ async def create_placements( or (details.creative_id if details and details.creative_id else None) or input.creative_id ) - if not creative_id: - raise domain.CreativeNotFound() - creative = creatives_by_id.get(creative_id) - if not creative: - creative = await self.database.get_creative(workspace_id, creative_id) - if not creative or creative.project_id != project.id: - raise domain.CreativeNotFound(creative_id) - creatives_by_id[creative_id] = creative + + # Если creative_id передан, ищем и валидируем креатив + creative: domain.Creative | None = None + if creative_id: + creative = creatives_by_id.get(creative_id) + if not creative: + creative = await self.database.get_creative(workspace_id, creative_id) + if not creative or creative.project_id != project.id: + raise domain.CreativeNotFound(creative_id) + creatives_by_id[creative_id] = creative + placement = domain.Placement( project_id=project.id, - creative_id=creative.id, + creative_id=creative.id if creative else None, channel_id=channel.id, invite_link=None, invite_link_type=invite_link_type,