from apps.master.serializers.master_serializers import ConnectorMasterSerializers
from apps.vehicle.models import VehicleMakeMaster, VehicleModelMaster
from base.serializers import DynamicFieldsModelSerializer


class VehicleMakeMasterSerializers(DynamicFieldsModelSerializer):
    """
    Serializer class for serializing and deserializing VehicleMakeMaster instances.

    This serializer class includes fields for 'id', 'name', and 'logo'.
    'id' is marked as read-only.

    Attributes:
        Meta.model: The model class to which this serializer applies.
        Meta.fields: The fields to include in the serialized representation.
        Meta.read_only_fields: The fields that should be treated as read-only during updates.
    """

    class Meta:
        model = VehicleMakeMaster
        fields = ("id", "name", "logo")
        read_only_fields = ("id",)


class VehicleModelMasterSerializers(DynamicFieldsModelSerializer):
    """
    Serializer class for serializing and deserializing VehicleModel instances.

    This serializer class includes fields for 'id', 'name', and 'vehicle_make'.
    'id' is marked as read-only.

    Attributes:
        Meta.model: The model class to which this serializer applies.
        Meta.fields: The fields to include in the serialized representation.
        Meta.read_only_fields: The fields that should be treated as read-only during updates.
    """

    vehicle_make_data = VehicleMakeMasterSerializers(
        source="vehicle_make", fields=["id", "name"], read_only=True
    )
    connector_data = ConnectorMasterSerializers(
        source="connector", fields=["id", "name"], read_only=True
    )

    class Meta:
        model = VehicleModelMaster
        fields = (
            "id",
            "name",
            "vehicle_make",
            "vehicle_make_data",
            "connector",
            "connector_data",
        )
        read_only_fields = ["id"]
