Исправление отображения фото в POS и улучшение обработки изображений

- Исправлен POS для использования миниатюр вместо оригиналов для быстрой загрузки
- Убран fallback на оригиналы - показываем миниатюру или ничего (лучше видно ошибки)
- Исправлен ImageService - возвращает пустую строку если миниатюра обработанного файла не найдена
- Исправлена ошибка JavaScript при массовом удалении фото (insertAdjacentElement на null)
- Добавлен контейнер photos-messages-container для надежного отображения сообщений
- Улучшено логирование ImageService для отладки путей к файлам
- Добавлена проверка exists() с детальным логированием в TenantAwareFileSystemStorage
This commit is contained in:
2025-12-21 19:52:55 +03:00
parent 812ecb53e6
commit bb821f9ef4
4 changed files with 76 additions and 12 deletions

View File

@@ -99,7 +99,12 @@ def get_showcase_kits_for_pos():
for photo in photos:
if photo.kit_id not in kit_photos:
kit_photos[photo.kit_id] = photo.get_thumbnail_url()
if photo and photo.image:
thumbnail_url = photo.get_thumbnail_url()
# Если миниатюра не найдена, возвращаем None (без фото)
if not thumbnail_url:
thumbnail_url = None
kit_photos[photo.kit_id] = thumbnail_url
# Формируем результат
showcase_kits = []
@@ -776,7 +781,12 @@ def get_items_api(request):
for p in products_qs:
image_url = None
if hasattr(p, 'first_photo_list') and p.first_photo_list:
image_url = p.first_photo_list[0].get_thumbnail_url()
photo = p.first_photo_list[0]
if photo and photo.image:
image_url = photo.get_thumbnail_url()
# Если миниатюра не найдена, возвращаем None (без фото)
if not image_url:
image_url = None
available = p.available_qty
reserved = p.reserved_qty
@@ -827,7 +837,12 @@ def get_items_api(request):
for k in kits_qs:
image_url = None
if hasattr(k, 'first_photo_list') and k.first_photo_list:
image_url = k.first_photo_list[0].get_thumbnail_url()
photo = k.first_photo_list[0]
if photo and photo.image:
image_url = photo.get_thumbnail_url()
# Если миниатюра не найдена, возвращаем None (без фото)
if not image_url:
image_url = None
kits.append({
'id': k.id,
@@ -893,8 +908,15 @@ def get_product_kit_details(request, kit_id):
'price': str(ki.product.actual_price)
} for ki in kit.kit_items.all()]
# Фото
photo_url = kit.photos.first().image.url if kit.photos.exists() else None
# Фото (используем миниатюру для быстрой загрузки)
photo_url = None
if kit.photos.exists():
first_photo = kit.photos.first()
if first_photo and first_photo.image:
photo_url = first_photo.get_thumbnail_url()
# Если миниатюра не найдена, возвращаем None (без фото)
if not photo_url:
photo_url = None
return JsonResponse({
'success': True,