hberp/hb_server/apps/qm/serializers.py

73 lines
2.5 KiB
Python

from rest_framework import serializers
from apps.mtm.models import RecordForm, RecordFormField
from apps.mtm.serializers import RecordFormFieldSerializer, RecordFormSimpleSerializer
from apps.system.serializers import FileSimpleSerializer
from .models import Standard, TestItem, TestRecord
class StandardCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Standard
fields = ['name', 'file', 'enabled', 'number']
class StandardSerializer(serializers.ModelSerializer):
file_ = FileSimpleSerializer(source='file', read_only=True)
class Meta:
model = Standard
fields = '__all__'
class StandardSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Standard
fields = ['id', 'name', 'number']
class TestItemCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = TestItem
fields = ['name', 'standard', 'term_number']
class TestItemSerializer(serializers.ModelSerializer):
standard_ = StandardSimpleSerializer(source='standard', read_only=True)
class Meta:
model = TestItem
fields = '__all__'
class AnalysisItemSerializer(serializers.ModelSerializer):
pass
class TestRecordCreateSerializer(serializers.ModelSerializer):
class Meta:
model = TestRecord
fields = ['form', 'record_data', 'is_testok', 'fifo_detail']
def create(self, validated_data):
if 'is_testok' not in validated_data:
raise serializers.ValidationError('未填写检测结论')
return super().create(validated_data)
class TestRecordListSerializer(serializers.ModelSerializer):
class Meta:
model = TestRecord
fields = '__all__'
class TestRecordDetailSerializer(serializers.ModelSerializer):
form_ = RecordFormSimpleSerializer(source='form', read_only=True)
record_data_ = serializers.SerializerMethodField()
class Meta:
model = TestRecord
fields = '__all__'
@staticmethod
def setup_eager_loading(queryset):
queryset = queryset.select_related('form','fifo_detail')
return queryset
def get_record_data_(self, obj):
record_data = obj.record_data
all_fields = RecordFormField.objects.filter(form=obj.form, is_deletd=False).order_by('sort')
all_fields_l = RecordFormFieldSerializer(instance=all_fields, many=True).data
for i in all_fields_l:
key = i['field_key']
i['field_value'] = record_data.get(key, None)
return all_fields_l