def reject(self, request, pk=None): approval_request = self.get_object() if not request.data.get("comment"): return Response({"comment": "This field is required."}, status=status.HTTP_400_BAD_REQUEST) try: approval_request.reject(approver=request.user, comment=request.data.get("comment")) except ApprovalRequest.NotActionable: return Response( { "error": "This approval request has already been approved or rejected." }, status=status.HTTP_400_BAD_REQUEST, ) except ApprovalRequest.CannotActOnOwnRequest: return Response( {"error": "You cannot reject your own approval request."}, status=status.HTTP_403_FORBIDDEN, ) return Response(ApprovalRequestSerializer(approval_request).data)
def request_approval(self, request, pk=None): revision = self.get_object() if revision.approval_status is not None: return Response( {"error": "This revision already has an approval request."}, status=status.HTTP_400_BAD_REQUEST, ) approval_request = revision.request_approval(creator=request.user) return Response(ApprovalRequestSerializer(approval_request).data, status=status.HTTP_201_CREATED)