diff --git a/apps/wpm/views.py b/apps/wpm/views.py index f70758ec..ffc67112 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -386,6 +386,22 @@ class HandoverViewSet(CustomModelViewSet): if instance.send_user != user and instance.recive_user != user and instance.create_by != user: raise ParseError('非交送人和接收人不可删除该记录') return super().perform_destroy(instance) + + @action(methods=['post'], detail=True, perms_map={'post': 'handover.create'}, serializer_class=HandoverSerializer) + @transaction.atomic + def create_and_submit(self, request, *args, **kwargs): + user = request.user + sr = HandoverSerializer(data=request.data, context={'request': request}) + sr.is_valid(raise_exception=True) + ins = sr.save() + if ins.type != Handover.H_SCRAP: + if ins.recive_user is None or user == ins.recive_user or user.belong_dept == ins.recive_user.belong_dept: + pass + else: + raise ParseError('非接收人不可提交') + if ins.submit_time is None: + handover_submit(ins, user, None) + return Response({"id": ins.id}) @action(methods=['post'], detail=True, perms_map={'post': 'handover.submit'}, serializer_class=Serializer) @transaction.atomic