from rest_framework import serializers
from service_media.models.service_media import ServiceMedia
from service.serializers.services_serializer import ServiceSerializer

class ServiceMediaSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    file_url = serializers.SerializerMethodField()

    class Meta:
        model = ServiceMedia
        fields = ['id','user','file_url','service','file','uploaded_at']
        read_only_fields = ['id','user','file_url','uploaded_at']

    def get_file_url(self, obj):
        request = self.context.get("request")
        if obj.file and hasattr(obj.file, 'url'):
            if request:
                return request.build_absolute_uri(obj.file.url)
            return obj.file.url
        return None
    
class ServiceMediaReadSerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    file_url = serializers.SerializerMethodField()
    service = ServiceSerializer(read_only=True)

    class Meta:
        model = ServiceMedia
        fields = ['id','file_url','service','file','uploaded_at']
        read_only_fields = ['id','user','file_url','uploaded_at']

    def get_file_url(self, obj):
        request = self.context.get("request")
        if obj.file and hasattr(obj.file, 'url'):
            if request:
                return request.build_absolute_uri(obj.file.url)
            return obj.file.url
        return None