Relax S3 URI parsing
This commit is contained in:
parent
9e99a6bba1
commit
ab1247fd2d
@ -13,6 +13,11 @@ from sentry_sdk.integrations.django import DjangoIntegration
|
|||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
|
|
||||||
|
class MediaBackendUrl(AnyUrl):
|
||||||
|
host_required = False
|
||||||
|
allowed_schemes = {"s3", "gcs", "local"}
|
||||||
|
|
||||||
|
|
||||||
def as_bool(v: Optional[Union[str, List[str]]]):
|
def as_bool(v: Optional[Union[str, List[str]]]):
|
||||||
if v is None:
|
if v is None:
|
||||||
return False
|
return False
|
||||||
@ -84,7 +89,7 @@ class Settings(BaseSettings):
|
|||||||
|
|
||||||
MEDIA_URL: str = "/media/"
|
MEDIA_URL: str = "/media/"
|
||||||
MEDIA_ROOT: str = str(BASE_DIR / "media")
|
MEDIA_ROOT: str = str(BASE_DIR / "media")
|
||||||
MEDIA_BACKEND: Optional[AnyUrl] = None
|
MEDIA_BACKEND: Optional[MediaBackendUrl] = None
|
||||||
|
|
||||||
PGHOST: Optional[str] = None
|
PGHOST: Optional[str] = None
|
||||||
PGPORT: Optional[int] = 5432
|
PGPORT: Optional[int] = 5432
|
||||||
@ -299,8 +304,10 @@ if SETUP.MEDIA_BACKEND:
|
|||||||
elif parsed.scheme == "s3":
|
elif parsed.scheme == "s3":
|
||||||
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
|
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
|
||||||
AWS_STORAGE_BUCKET_NAME = parsed.path.lstrip("/")
|
AWS_STORAGE_BUCKET_NAME = parsed.path.lstrip("/")
|
||||||
|
if parsed.username is not None:
|
||||||
AWS_ACCESS_KEY_ID = parsed.username
|
AWS_ACCESS_KEY_ID = parsed.username
|
||||||
AWS_SECRET_ACCESS_KEY = parsed.password
|
AWS_SECRET_ACCESS_KEY = parsed.password
|
||||||
|
if parsed.hostname is not None:
|
||||||
port = parsed.port or 443
|
port = parsed.port or 443
|
||||||
AWS_S3_ENDPOINT_URL = f"https://{parsed.hostname}:{port}"
|
AWS_S3_ENDPOINT_URL = f"https://{parsed.hostname}:{port}"
|
||||||
else:
|
else:
|
||||||
|
Reference in New Issue
Block a user