fix: 工单回到创建中的相应操作

This commit is contained in:
caoqianming 2023-06-21 22:16:23 +08:00
parent 50749cd10d
commit df1b0c6b20
4 changed files with 8 additions and 14 deletions

View File

@ -95,7 +95,7 @@ class OplWorkerCreateSerializer(CustomModelSerializer):
def create(self, validated_data):
opl = validated_data['opl']
ticket = opl.ticket
if ticket and ticket.act_state not in [Ticket.TICKET_ACT_STATE_DRAFT, Ticket.TICKET_ACT_STATE_BACK, Ticket.TICKET_ACT_STATE_RETREAT]:
if ticket and ticket.state.type != 1:
raise ParseError('许可证已处理不可新增')
certificates = validated_data.pop('certificates')
if OplWorker.objects.filter(worker=validated_data['worker'], opl=validated_data['opl']).exists():
@ -171,12 +171,6 @@ class GasCheckCreateUpdateSerializer(CustomModelSerializer):
model = GasCheck
exclude = EXCLUDE_FIELDS
def create(self, validated_data):
opl = validated_data['opl']
if opl.ticket:
raise ParseError('许可证已处理不可新增')
return super().create(validated_data)
class GasCheckSerializer(CustomModelSerializer):
checker_ = UserSimpleSerializer(source='checker', read_only=True)

View File

@ -81,7 +81,7 @@ def correct_operation_state(ticket: Ticket):
if op.state == Operation.OP_AUDIT:
need_backs = []
for opl in Opl.objects.filter(operation=op):
if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1 and opl.ticket.act_state in [2, 3]): # 如果在初始状态且是撤回或退回
if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1): # 如果在初始状态
need_backs.append(True)
else:
need_backs.append(False)

View File

@ -14,7 +14,7 @@ def correct_operation_state():
for op in Operation.objects.filter(state=Operation.OP_AUDIT):
need_backs = []
for opl in Opl.objects.filter(operation=op):
if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1 and opl.ticket.act_state in [2, 3]): # 如果在初始状态且是撤回或退回
if (opl.ticket is None) or (opl.ticket and opl.ticket.state.type == 1): # 如果在初始状态
need_backs.append(True)
else:
need_backs.append(False)

View File

@ -87,7 +87,7 @@ class OplViewSet(CustomModelViewSet):
@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:
if obj.ticket and obj.ticket.state.type !=1:
raise ParseError('许可证已处理不可删除')
user = request.user
if user == obj.create_by or user.is_superuser:
@ -101,7 +101,7 @@ class OplViewSet(CustomModelViewSet):
def update(self, request, *args, **kwargs):
obj = self.get_object()
if obj.ticket and obj.ticket.act_state not in [Ticket.TICKET_ACT_STATE_DRAFT, Ticket.TICKET_ACT_STATE_BACK, Ticket.TICKET_ACT_STATE_RETREAT]:
if obj.ticket and obj.ticket.state.type != 1:
raise ParseError('许可证已处理不可编辑')
user = request.user
if user == obj.create_by or user.is_superuser:
@ -153,14 +153,14 @@ class OplWorkerViewSet(CustomModelViewSet):
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
ticket = obj.opl.ticket
if ticket and ticket.act_state not in [Ticket.TICKET_ACT_STATE_DRAFT, Ticket.TICKET_ACT_STATE_BACK, Ticket.TICKET_ACT_STATE_RETREAT]:
if ticket and ticket.state.type !=1:
raise ParseError('许可证已处理不可删除')
return super().destroy(request, *args, **kwargs)
def update(self, request, *args, **kwargs):
obj = self.get_object()
ticket = obj.opl.ticket
if ticket and ticket.act_state not in [Ticket.TICKET_ACT_STATE_DRAFT, Ticket.TICKET_ACT_STATE_BACK, Ticket.TICKET_ACT_STATE_RETREAT]:
if ticket and ticket.state.type !=1:
raise ParseError('许可证已处理不可编辑')
return super().update(request, *args, **kwargs)
@ -175,7 +175,7 @@ class GasCheckViewSet(CreateModelMixin, ListModelMixin, DestroyModelMixin, Custo
def destroy(self, request, *args, **kwargs):
obj = self.get_object()
ticket = obj.opl.ticket
if ticket and ticket.act_state not in [Ticket.TICKET_ACT_STATE_DRAFT, Ticket.TICKET_ACT_STATE_BACK, Ticket.TICKET_ACT_STATE_RETREAT]:
if ticket and ticket.state.type != 1:
raise ParseError('许可证已处理不可删除')
obj.delete()
return Response(status=204)