hberp/hb_server/apps/qm/views.py

65 lines
2.4 KiB
Python

from apps.qm.serializers import StandardCreateUpdateSerializer, StandardSerializer, TestItemCreateUpdateSerializer, TestItemSerializer, TestRecordCreateSerializer, TestRecordDetailSerializer, TestRecordListSerializer
from apps.qm.models import Standard, TestItem, TestRecord
from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from apps.system.mixins import CreateUpdateModelAMixin
# Create your views here.
class StandardViewSet(CreateUpdateModelAMixin, ModelViewSet):
"""
标准规范-增删改查
"""
perms_map = {'*': '*'}
queryset = Standard.objects.select_related('file').all()
serializer_class = StandardSerializer
search_fields = ['name', 'number']
filterset_fields = []
ordering_fields = ['number']
ordering = ['id']
def get_serializer_class(self):
if self.action in ['create', 'update']:
return StandardCreateUpdateSerializer
return StandardSerializer
class TestItemViewSet(CreateUpdateModelAMixin, ModelViewSet):
"""
检验项目增删改查
"""
perms_map = {'*': '*'}
queryset = TestItem.objects.select_related('standard').all()
serializer_class = TestItemSerializer
search_fields = ['name', 'standard__name', 'standard__number']
filterset_fields = ['standard']
ordering_fields = ['id']
ordering = ['id']
def get_serializer_class(self):
if self.action in ['create', 'update']:
return TestItemCreateUpdateSerializer
return TestItemSerializer
class TestRecordViewSet(ModelViewSet):
"""
检测记录
"""
perms_map = {'*': '*'}
queryset = TestRecord.objects.select_related('fifo_detail', 'form').all()
serializer_class = TestRecordListSerializer
ordering = ['-id']
def get_serializer_class(self):
if self.action == 'create':
return TestRecordCreateSerializer
elif self.action == 'list':
return TestRecordListSerializer
elif self.action == 'retrieve':
return TestRecordDetailSerializer
return super().get_serializer_class()
def perform_create(self, serializer):
obj = serializer.save(create_by = self.request.user)
# 如果检测合格
if obj.fifo_detail:
obj.fifo_detail.is_testok = True if obj.is_testok else False
obj.fifo_detail.is_tested = True
obj.fifo_detail.save()