53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from rest_framework import serializers
|
|
|
|
from apps.orders.models import Order, OrderStage, OrderStageLog
|
|
|
|
|
|
class OrderStageSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = OrderStage
|
|
fields = [
|
|
"id",
|
|
"label",
|
|
"template",
|
|
"sort_order",
|
|
"requires_extra_input",
|
|
"extra_input_label",
|
|
"updated_at",
|
|
]
|
|
read_only_fields = ["updated_at"]
|
|
|
|
def validate_template(self, template):
|
|
if template is None:
|
|
return template
|
|
request = self.context["request"]
|
|
if template.user_id != request.user.id:
|
|
raise serializers.ValidationError("این قالب متعلق به شما نیست.")
|
|
return template
|
|
|
|
|
|
class OrderStageLogSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = OrderStageLog
|
|
fields = ["id", "stage", "stage_label", "message_body", "extra_input_value", "created_at"]
|
|
read_only_fields = fields
|
|
|
|
|
|
class OrderSerializer(serializers.ModelSerializer):
|
|
current_stage_label = serializers.CharField(source="current_stage.label", read_only=True, default="")
|
|
|
|
class Meta:
|
|
model = Order
|
|
fields = [
|
|
"id",
|
|
"customer_name",
|
|
"customer_phone",
|
|
"tracking_code",
|
|
"current_stage",
|
|
"current_stage_label",
|
|
"is_completed",
|
|
"created_at",
|
|
"updated_at",
|
|
]
|
|
read_only_fields = ["current_stage", "is_completed", "created_at", "updated_at"]
|