""" Утилиты для работы с медиа URL """ from django.conf import settings def get_media_base_url(request=None): """ Возвращает базовый URL для медиа-файлов. Приоритет: 1. Если USE_HTTPS=true и DOMAIN установлен → используем его 2. Если есть request → используем домен из запроса 3. Fallback → /media/ """ # Если в настройках указан предпочтительный домен use_https = getattr(settings, "USE_HTTPS", False) domain = getattr(settings, "DOMAIN", None) if domain and domain not in ["127.0.0.1:9000", "localhost:9000"]: # Глобальный домен из настроек scheme = "https" if use_https else "http" return f"{scheme}://{domain}/media/" # Используем домен из запроса (для локальной разработки) if request: return request.build_absolute_uri("/media/") # Fallback return "/media/" def build_media_url(file_field, request=None): """ Формирует полный URL для медиа-файла. Args: file_field: ImageField/FileField объект request: HTTP запрос (опционально) Returns: str: Полный URL к файлу """ if not file_field: return None # Получаем относительный путь if hasattr(file_field, "url"): relative_url = file_field.url else: relative_url = str(file_field) # Убираем /media/ если есть if relative_url.startswith("/media/"): relative_url = relative_url[7:] elif relative_url.startswith("/"): relative_url = relative_url[1:] # Формируем полный URL base_url = get_media_base_url(request) if not base_url.endswith("/"): base_url += "/" return f"{base_url}{relative_url}"