From 91f20a73afbcfff401535162c6e0da05a07b402c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Fri, 4 Nov 2022 07:20:17 +0800 Subject: [PATCH] =?UTF-8?q?rpj,=20visit,=20opl=E5=88=A0=E9=99=A4=E6=97=B6?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4=E5=B7=A5=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/opm/views.py | 10 ++++++++-- apps/rpm/views.py | 6 +++++- apps/vm/views.py | 6 +++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/opm/views.py b/apps/opm/views.py index 8f2bab0e..c6324bbc 100644 --- a/apps/opm/views.py +++ b/apps/opm/views.py @@ -14,6 +14,7 @@ from rest_framework.decorators import action from rest_framework.serializers import Serializer from apps.wf.models import Ticket from django.core.cache import cache +from django.db import transaction # Create your views here. @@ -75,6 +76,7 @@ class OplViewSet(CustomModelViewSet): select_related_fields = ['cate', 'operation', 'dept_do', 'charger', 'monitor', 'ticket'] filterset_fields = ['operation', 'cate'] + @transaction.atomic def destroy(self, request, *args, **kwargs): obj = self.get_object() if obj.ticket and obj.ticket.act_state != Ticket.TICKET_ACT_STATE_DRAFT: @@ -84,7 +86,10 @@ class OplViewSet(CustomModelViewSet): pass else: raise ParseError('非创建人不可删除') - return super().destroy(request, *args, **kwargs) + if obj.ticket: + obj.ticket.delete() + obj.delete() + return Response(status=204) def update(self, request, *args, **kwargs): obj = self.get_object() @@ -166,4 +171,5 @@ class GasCheckViewSet(CreateModelMixin, ListModelMixin, DestroyModelMixin, Custo obj = self.get_object() if obj.opl.ticket: raise ParseError('许可证已处理不可删除') - return super().destroy(request, *args, **kwargs) + obj.delete() + return Response(status=204) diff --git a/apps/rpm/views.py b/apps/rpm/views.py index 77f8b8d2..1b2d63b1 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -198,13 +198,17 @@ class RpjViewSet(CustomModelViewSet): raise ParseError('项目非创建状态不可更改') return super().update(request, *args, **kwargs) + @transaction.atomic def destroy(self, request, *args, **kwargs): obj = self.get_object() if obj.state in [Rpj.RPJ_ENTER, Rpj.RPJ_DONE]: raise ParseError('该项目不可删除') elif obj.state == Rpj.RPJ_WORKING and Remployee.objects.filter(rpj=obj).exists(): raise ParseError('该项目人员在厂不可删除') - return super().destroy(request, *args, **kwargs) + if obj.ticket: + obj.ticket.delete() + obj.delete() + return Response(status=204) class RpjmemberViewSet(CustomModelViewSet): diff --git a/apps/vm/views.py b/apps/vm/views.py index b6dd082e..a7773a84 100644 --- a/apps/vm/views.py +++ b/apps/vm/views.py @@ -51,13 +51,17 @@ class VisitViewSet(CustomModelViewSet): raise ParseError('项目非创建状态不可更改') return super().update(request, *args, **kwargs) + @transaction.atomic def destroy(self, request, *args, **kwargs): obj = self.get_object() if obj.state in [Visit.V_ENTER, Visit.V_DONE]: raise ParseError('该项目不可删除') elif obj.state == Visit.V_WORKING and Visitor.objects.filter(visit=obj).exists(): raise ParseError('该项目人员在厂不可删除') - return super().destroy(request, *args, **kwargs) + if obj.ticket: + obj.ticket.delete() + obj.delete() + return Response(status=204) @action(methods=['get'], detail=False, perms_map={'get': '*'}, serializer_class=Serializer) def export_excel(self, request, pk=None):