from rest_framework import serializers from core.apps.evaluation.models import ValuationModel class BaseValuationSerializer(serializers.ModelSerializer): status_display = serializers.CharField(source="get_status_display", read_only=True) evaluation_type_display = serializers.CharField(source="get_evaluation_type_display", read_only=True) payment_status_display = serializers.CharField(source="get_payment_status_display", read_only=True) customer_name = serializers.CharField(source="customer.__str__", read_only=True) class Meta: model = ValuationModel fields = [ "id", "conclusion_number", "customer", "customer_name", "evaluation_purpose", "evaluation_type", "evaluation_type_display", "status", "status_display", "created_at", ] class ListValuationSerializer(BaseValuationSerializer): class Meta(BaseValuationSerializer.Meta): fields = BaseValuationSerializer.Meta.fields + [ "final_price", "payment_status_display", ] class RetrieveValuationSerializer(BaseValuationSerializer): created_by_name = serializers.CharField(source="created_by.get_full_name", read_only=True) assigned_to_name = serializers.CharField(source="assigned_to.get_full_name", read_only=True) class Meta(BaseValuationSerializer.Meta): fields = BaseValuationSerializer.Meta.fields + [ "property_owner", "created_by", "created_by_name", "assigned_to", "assigned_to_name", "evaluation_subtype", "estimated_price", "final_price", "payment_status", "payment_status_display", "is_courier_delivery", "courier_extra_amount", "notes", "updated_at", ] class CreateValuationSerializer(BaseValuationSerializer): class Meta(BaseValuationSerializer.Meta): fields = [ "customer", "property_owner", "evaluation_purpose", "evaluation_type", "evaluation_subtype", "is_courier_delivery", "notes", ]