"""Custom DRF serializer fields."""

from django.conf import settings
from rest_framework import serializers


class AbsoluteImageField(serializers.ImageField):
    """ImageField that always returns an absolute URL, even without request context."""

    def to_representation(self, value):
        if not value:
            return None

        # If request is available in context, use DRF's default behavior (builds full URL)
        request = self.context.get("request")
        if request:
            return request.build_absolute_uri(value.url)

        # Fallback: build URL from SITE_URL or MEDIA_URL
        site_url = getattr(settings, "SITE_URL", "").rstrip("/")
        if site_url:
            return f"{site_url}{value.url}"

        # Last resort: return the relative URL as-is
        return value.url
