From ae84f6b6c93221f1071addeb1dc7830e6c0d9702 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 5 Jul 2023 13:45:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20quastat=20=E5=8A=A0=E5=85=A5=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/qm/serializers.py | 13 ++++++++++++- apps/qm/views.py | 13 ++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/apps/qm/serializers.py b/apps/qm/serializers.py index a024b88e..a47594df 100644 --- a/apps/qm/serializers.py +++ b/apps/qm/serializers.py @@ -30,4 +30,15 @@ class QuaStatSerializer(CustomModelSerializer): end_time_local = localtime(end_time) attrs['year_s'], attrs['month_s'], attrs['day_s'] = end_time_local.year, end_time_local.month, end_time_local.day attrs['rate_pass'] = attrs['num_ok']/attrs['num_test'] - return attrs \ No newline at end of file + return attrs + +class QuaStatUpdateSerializer(CustomModelSerializer): + belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) + material_name = serializers.CharField(source='material.name', read_only=True) + testitem_name = serializers.CharField(source='testitem.name', read_only=True) + + class Meta: + model = QuaStat + fields = '__all__' + read_only_fields = EXCLUDE_FIELDS + ['type', 'rate_pass', 'year_s', 'month_s', 'day_s', 'belong_dept', 'sflog', 'material', 'testitem'] + extra_kwargs = {'val_avg': {'required': True}, 'num_test':{'required': True}, 'num_ok': {'required': True}} \ No newline at end of file diff --git a/apps/qm/views.py b/apps/qm/views.py index bfb44763..7b07ad7e 100644 --- a/apps/qm/views.py +++ b/apps/qm/views.py @@ -1,10 +1,11 @@ from django.shortcuts import render -from rest_framework.mixins import ListModelMixin, CreateModelMixin +from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin from rest_framework.decorators import action from apps.qm.models import QuaStat, TestItem -from apps.qm.serializers import QuaStatSerializer, TestItemSerializer +from apps.qm.serializers import QuaStatSerializer, TestItemSerializer, QuaStatUpdateSerializer from apps.qm.tasks import cal_quastat from rest_framework.response import Response +from apps.utils.mixins import BulkCreateModelMixin, BulkUpdateModelMixin from apps.utils.viewsets import CustomGenericViewSet @@ -21,19 +22,21 @@ class TestItemViewSet(ListModelMixin, CustomGenericViewSet): filterset_fields = [] ordering = ['id'] -class QuaStatViewSet(ListModelMixin, CreateModelMixin, CustomGenericViewSet): +class QuaStatViewSet(ListModelMixin, BulkUpdateModelMixin, CustomGenericViewSet): """ list:质量分析报告 质量分析报告 """ - perms_map = {'get': '*', 'post': 'quastat.create'} + perms_map = {'get': '*', 'put': 'quastat.update'} queryset = QuaStat.objects.all() serializer_class = QuaStatSerializer + update_serializer_class = QuaStatUpdateSerializer filterset_fields = ['type', 'year_s', 'month_s', 'day_s', 'material', 'testitem', 'belong_dept', 'sflog', 'sflog__mgroup'] select_related_fields = ['belong_dept', 'material', 'testitem'] - def perform_create(self, serializer): + + def perform_update(self, serializer): ins = serializer.save() # 计算其他方面的统计 cal_quastat.delay(ins.id) \ No newline at end of file