Spaces:
Sleeping
Sleeping
File size: 1,783 Bytes
0bb49b0 68d341f 0bb49b0 68d341f 0bb49b0 68d341f 0bb49b0 68d341f 0bb49b0 68d341f 0bb49b0 68d341f 0bb49b0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | from pathlib import Path
from django.conf import settings
from django.core.files.storage import FileSystemStorage
class ProductImageStorage(FileSystemStorage):
"""
Save product uploads into MEDIA_ROOT and keep older static/media paths
readable for backward compatibility.
"""
def __init__(self, *args, **kwargs):
static_base_url = settings.STATIC_URL if settings.STATIC_URL.endswith("/") else f"{settings.STATIC_URL}/"
media_base_url = settings.MEDIA_URL if settings.MEDIA_URL.endswith("/") else f"{settings.MEDIA_URL}/"
super().__init__(
location=settings.MEDIA_ROOT,
base_url=media_base_url,
)
self.legacy_storage = FileSystemStorage(
location=Path(settings.BASE_DIR) / "static",
base_url=static_base_url,
)
self.legacy_media_storage = FileSystemStorage(
location=Path(settings.BASE_DIR) / "media",
base_url=media_base_url,
)
def exists(self, name):
return (
super().exists(name)
or self.legacy_storage.exists(name)
or self.legacy_media_storage.exists(name)
)
def open(self, name, mode="rb"):
if super().exists(name):
return super().open(name, mode)
if self.legacy_storage.exists(name):
return self.legacy_storage.open(name, mode)
return self.legacy_media_storage.open(name, mode)
def url(self, name):
if super().exists(name):
return super().url(name)
if self.legacy_storage.exists(name):
return self.legacy_storage.url(name)
if self.legacy_media_storage.exists(name):
return self.legacy_media_storage.url(name)
return super().url(name)
|