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):