48 lines
2.1 KiB
Python
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"]
|