2026-09-07 19:43:48 +03:00

45 lines
1.3 KiB
Python

import logging
from django.core.files.base import ContentFile
from tasks.media import attachment_media_kind, render_attachment_thumbnail
from .models import ProcurementItemAttachment
logger = logging.getLogger(__name__)
def procurement_attachment_media_kind(
attachment: ProcurementItemAttachment,
) -> str | None:
return attachment_media_kind(attachment)
def ensure_procurement_attachment_thumbnail(
attachment: ProcurementItemAttachment,
) -> bool:
if attachment.thumbnail:
return True
if not procurement_attachment_media_kind(attachment):
return False
try:
thumbnail = render_attachment_thumbnail(attachment)
attachment.thumbnail.save(
(f"procurement-item-{attachment.item_id}-attachment-{attachment.id}.webp"),
ContentFile(thumbnail),
save=True,
)
return True
except Exception as error:
logger.exception(
"Procurement attachment thumbnail generation failed",
extra={
"event": "procurement.attachment.thumbnail_generation_failed",
"procurement_item_id": attachment.item_id,
"attachment_id": attachment.id,
"error_type": type(error).__name__,
},
)
return False