50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
from rest_framework import serializers
|
|
from rest_framework.exceptions import ValidationError
|
|
|
|
from apps.mtm.serializers import MaterialSerializer
|
|
from apps.pm.models import Mtask, Utask
|
|
from apps.sam.models import OrderItem
|
|
from apps.utils.serializers import CustomModelSerializer
|
|
|
|
|
|
class UtaskSerializer(CustomModelSerializer):
|
|
material_ = MaterialSerializer(source='material', read_only=True)
|
|
|
|
class Meta:
|
|
model = Utask
|
|
fields = '__all__'
|
|
|
|
def update(self, instance, validated_data):
|
|
if instance.state != Mtask.MTASK_CREATED:
|
|
raise ValidationError('任务非创建中不可编辑')
|
|
new_data = {key: validated_data[key] for key in [
|
|
'number', 'count', 'start_date', 'end_date']}
|
|
return super().update(instance, new_data)
|
|
|
|
|
|
class MtaskSerializer(CustomModelSerializer):
|
|
material_ = MaterialSerializer(source='material', read_only=True)
|
|
mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
|
|
|
|
class Meta:
|
|
model = Mtask
|
|
fields = '__all__'
|
|
read_only_fields = ['utask']
|
|
|
|
def update(self, instance, validated_data):
|
|
if instance.state != Mtask.MTASK_CREATED:
|
|
raise ValidationError('任务非创建中不可编辑')
|
|
if instance.utask is not None:
|
|
new_data = {'count': validated_data['count']}
|
|
else:
|
|
new_data = {key: validated_data[key] for key in [
|
|
'number', 'count', 'start_date', 'end_date']}
|
|
return super().update(instance, new_data)
|
|
|
|
|
|
class SchedueSerializer(serializers.Serializer):
|
|
orderitems = serializers.PrimaryKeyRelatedField(
|
|
label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
|
|
start_date = serializers.DateField(label='计划开工日期')
|
|
end_date = serializers.DateField(label='计划完工日期')
|