from rest_framework import serializers from apps.core.serializers import AsyncModelSerializer from .models import ChannelAccount, ChannelOrder, WebhookEvent class ChannelAccountSerializer(AsyncModelSerializer): platform_name = serializers.CharField(source="get_platform_display", read_only=True) warehouse_name = serializers.CharField(source="default_warehouse.name", read_only=True, default=None) customer_name = serializers.CharField(source="default_customer.name", read_only=True, default=None) class Meta: model = ChannelAccount fields = [ "id", "platform", "platform_name", "shop_id", "shop_name", "app_key", "is_active", "default_warehouse", "warehouse_name", "default_customer", "customer_name", "created_at", "updated_at", ] read_only_fields = ["id", "created_at", "updated_at"] class ChannelOrderSerializer(AsyncModelSerializer): shop_name = serializers.CharField(source="channel_account.shop_name", read_only=True) platform = serializers.CharField(source="channel_account.platform", read_only=True) sync_status_name = serializers.CharField(source="get_sync_status_display", read_only=True) sales_order_no = serializers.CharField(source="sales_order.bill_no", read_only=True, default=None) class Meta: model = ChannelOrder fields = [ "id", "channel_account", "shop_name", "platform", "external_order_id", "order_status", "order_amount", "buyer_name", "buyer_phone", "receiver_address", "sync_status", "sync_status_name", "sync_error", "sales_order", "sales_order_no", "raw_payload", "created_at", "updated_at", ] read_only_fields = ["id", "sales_order", "sync_status", "sync_error", "created_at", "updated_at"] class WebhookEventSerializer(AsyncModelSerializer): class Meta: model = WebhookEvent fields = [ "id", "direction", "source", "event_type", "payload", "status", "error_message", "created_at", ] read_only_fields = ["id", "created_at"]