88 lines
2.8 KiB
Python
88 lines
2.8 KiB
Python
from rest_framework import serializers
|
|
|
|
from .models import InputMaterial, Material, OutputMaterial, Process, ProductProcess, Step
|
|
from apps.system.serializers import FileSimpleSerializer
|
|
|
|
|
|
class MaterialSerializer(serializers.ModelSerializer):
|
|
processes = serializers.ListField(child=serializers.IntegerField(min_value=1))
|
|
class Meta:
|
|
model = Material
|
|
fields = '__all__'
|
|
|
|
class MaterialDetailSerializer(serializers.ModelSerializer):
|
|
processes_ = serializers.SerializerMethodField()
|
|
class Meta:
|
|
model = Material
|
|
fields = '__all__'
|
|
|
|
def get_processes_(self, obj):
|
|
objs = Process.objects.filter(id__in=obj.processes)
|
|
return ProcessSimpleSerializer(instance=objs, many=True).data
|
|
|
|
|
|
class MaterialSimpleSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Material
|
|
fields = ['id', 'name', 'number']
|
|
|
|
class ProcessSerializer(serializers.ModelSerializer):
|
|
instruction_ = FileSimpleSerializer(source='instruction', read_only=True)
|
|
class Meta:
|
|
model = Process
|
|
fields = '__all__'
|
|
|
|
class ProcessSimpleSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Process
|
|
fields = ['id', 'name', 'number']
|
|
|
|
class StepSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Step
|
|
fields = '__all__'
|
|
|
|
class ProductProcessListSerializer(serializers.ModelSerializer):
|
|
process_ = ProcessSimpleSerializer(source='process', read_only=True)
|
|
product_ = MaterialSimpleSerializer(source='product', read_only=True)
|
|
class Meta:
|
|
model = ProductProcess
|
|
fields = '__all__'
|
|
|
|
class ProductProcessUpdateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ProductProcess
|
|
fields = ['sort']
|
|
|
|
class InputMaterialListSerializer(serializers.ModelSerializer):
|
|
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
|
class Meta:
|
|
model = InputMaterial
|
|
fields = '__all__'
|
|
|
|
class OutputMaterialListSerializer(serializers.ModelSerializer):
|
|
material_ = MaterialSimpleSerializer(source='material', read_only=True)
|
|
class Meta:
|
|
model = OutputMaterial
|
|
fields = '__all__'
|
|
|
|
|
|
class InputMaterialSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = InputMaterial
|
|
fields = ['number', 'unit', 'sort', 'material', 'product', 'process']
|
|
|
|
class InputMaterialUpdateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = InputMaterial
|
|
fields = ['number', 'unit', 'sort']
|
|
|
|
class OutputMaterialSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = OutputMaterial
|
|
fields = ['number', 'unit', 'sort', 'material', 'product', 'process']
|
|
|
|
class OutputMaterialUpdateSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = OutputMaterial
|
|
fields = ['number', 'unit', 'sort'] |