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,