34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from rest_framework import serializers
|
|
from apps.core.serializers import AsyncModelSerializer
|
|
from .models import APIKey
|
|
|
|
|
|
class APIKeySerializer(AsyncModelSerializer):
|
|
class Meta:
|
|
model = APIKey
|
|
fields = [
|
|
"id", "name", "prefix", "scopes", "is_active",
|
|
"rate_limit", "expires_at", "last_used_at",
|
|
"created_at", "updated_at",
|
|
]
|
|
read_only_fields = ["id", "prefix", "last_used_at", "created_at", "updated_at"]
|
|
|
|
|
|
class APIKeyCreateInputSerializer(serializers.Serializer):
|
|
name = serializers.CharField(max_length=128)
|
|
scopes = serializers.ListField(child=serializers.CharField(), required=False)
|
|
expires_at = serializers.DateTimeField(required=False, allow_null=True)
|
|
|
|
|
|
class ExternalOrderLineInputSerializer(serializers.Serializer):
|
|
product_code = serializers.CharField(max_length=64)
|
|
quantity = serializers.DecimalField(max_digits=18, decimal_places=4)
|
|
unit_price = serializers.DecimalField(max_digits=18, decimal_places=4, required=False)
|
|
|
|
|
|
class ExternalOrderCreateSerializer(serializers.Serializer):
|
|
customer_code = serializers.CharField(max_length=64)
|
|
warehouse_code = serializers.CharField(max_length=64, required=False)
|
|
remark = serializers.CharField(max_length=255, required=False, allow_blank=True, default="")
|
|
lines = ExternalOrderLineInputSerializer(many=True)
|