1
0
forked from erp-dev/erp

fix: little bugs, feat: woodpecker settings

This commit is contained in:
2025-11-14 15:11:26 +08:00
parent 107e65afc0
commit af523d0350
9 changed files with 852 additions and 27 deletions

View File

@@ -205,6 +205,7 @@ class PlateOrderListSerializer(serializers.ModelSerializer):
merchandiser_name = serializers.CharField(source="merchandiser.name", read_only=True)
status = serializers.CharField(read_only=True)
progress_percentage = serializers.IntegerField(read_only=True)
process_name = serializers.SerializerMethodField()
class Meta:
model = models.PlateOrder
@@ -216,13 +217,25 @@ class PlateOrderListSerializer(serializers.ModelSerializer):
'merchandiser', 'merchandiser_name',
'style_name', 'fabric', 'width',
'required_completion_date', 'completion_date',
'is_ordered', 'status', 'progress_percentage',
'is_ordered', 'process', 'process_name',
'status', 'progress_percentage',
'created_at', 'updated_at'
]
read_only_fields = [
'id', 'status', 'progress_percentage',
'created_at', 'updated_at'
]
def get_process_name(self, obj):
"""获取流程名称"""
if obj.process:
try:
from stateflow.models import Process
process = Process.objects.get(id=obj.process)
return process.name
except Process.DoesNotExist:
return None
return None
class PlateOrderDetailSerializer(serializers.ModelSerializer):
@@ -238,6 +251,7 @@ class PlateOrderDetailSerializer(serializers.ModelSerializer):
progress_percentage = serializers.IntegerField(read_only=True)
business_object_id = serializers.IntegerField(source="business_object.id", read_only=True)
plate_image_url = serializers.SerializerMethodField()
process_name = serializers.SerializerMethodField()
class Meta:
model = models.PlateOrder
@@ -254,6 +268,7 @@ class PlateOrderDetailSerializer(serializers.ModelSerializer):
'sample_meter', 'required_sample_meters',
'required_completion_date', 'completion_date',
'approval_result', 'is_ordered', 'customer_feedback',
'process', 'process_name',
'status', 'status_id', 'is_completed', 'has_started',
'progress_percentage', 'business_object_id',
'created_at', 'updated_at'
@@ -272,6 +287,17 @@ class PlateOrderDetailSerializer(serializers.ModelSerializer):
return request.build_absolute_uri(obj.plate_image.url)
return obj.plate_image.url
return None
def get_process_name(self, obj):
"""获取流程名称"""
if obj.process:
try:
from stateflow.models import Process
process = Process.objects.get(id=obj.process)
return process.name
except Process.DoesNotExist:
return None
return None
class PlateOrderCreateUpdateSerializer(serializers.ModelSerializer):
@@ -290,7 +316,8 @@ class PlateOrderCreateUpdateSerializer(serializers.ModelSerializer):
"sample_rating", "difficulty_rating",
"sample_meter", "required_sample_meters",
"required_completion_date", "completion_date",
"approval_result", "is_ordered", "customer_feedback"
"approval_result", "is_ordered", "customer_feedback",
"process"
]
read_only_fields = ["id"]
@@ -324,6 +351,14 @@ class PlateOrderCreateUpdateSerializer(serializers.ModelSerializer):
raise serializers.ValidationError("所需样品米数不能为负数")
return value
def validate_process(self, value):
"""验证流程是否存在"""
if value:
from stateflow.models import Process
if not Process.objects.filter(id=value).exists():
raise serializers.ValidationError("流程不存在")
return value
def validate(self, attrs):
"""交叉验证"""
return attrs
@@ -332,16 +367,14 @@ class PlateOrderCreateUpdateSerializer(serializers.ModelSerializer):
"""创建开版订单"""
user = self.context["request"].user
# 创建 PlateOrder
# 创建 PlateOrdersave 方法会自动创建 BusinessObject
plate_order = models.PlateOrder.objects.create(**validated_data)
# 暂时不自动创建 BusinessObject由 admin 或其他地方创建
return plate_order
def update(self, instance, validated_data):
"""更新开版订单"""
# 直接更新字段
# 直接更新字段save 方法会自动处理 BusinessObject 的创建
for attr, value in validated_data.items():
setattr(instance, attr, value)
instance.save()