Fix: Use storage.url() for tenant-aware image URLs in frontend

Updated ImageService to use default_storage.url() instead of manually
constructing URLs. This ensures images displayed on the frontend correctly
include the tenant_id in the path, enabling proper file access within
multi-tenant environment.

Changes:
- ImageService.get_url() now delegates to default_storage.url()
- All image URLs now include /media/tenants/{tenant_id}/ path
- Ensures consistent behavior with TenantAwareFileSystemStorage
- Frontend photos now display correctly with tenant isolation

Result:
- Thumbnail URLs: /media/tenants/papa/products/4/28/thumb.webp
- Medium URLs: /media/tenants/papa/products/4/28/medium.webp
- Large URLs: /media/tenants/papa/products/4/28/large.webp
- Original URLs: /media/tenants/papa/products/4/28/original.jpg

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-23 20:55:02 +03:00
parent 87cba63c47
commit 30f21989d6
2 changed files with 7 additions and 2 deletions

View File

@@ -88,9 +88,12 @@ class ImageService:
# Преобразуем thumbnail в thumb
final_size_name = ImageService._normalize_size_name(size)
# Создаем путь и возвращаем URL
# Создаем путь и используем storage.url() для корректной работы с tenant-aware storage
file_path = f"{base_path}/{entity_id}/{photo_id}/{final_size_name}.{extension}"
return f"{settings.MEDIA_URL}{file_path}"
# Используем default_storage.url() для корректной работы с TenantAwareFileSystemStorage
# Это гарантирует что URL будет содержать tenant_id если необходимо
return default_storage.url(file_path)
except Exception:
return ''