Files
dealerhub/backend/apps/channel/serializers.py
T

48 lines
2.1 KiB
Python

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"]