class Transfer(Rsync, SFtp, Copy): def __init__(self, method): self.methodDict = ["rsync", "copy", "sftp"] self.setServerFlag = 0 self.method = method if self.method not in self.methodDict: raise TransferError(method + " type of transfer is not " + "implemented") def setServerParams(self, server, uname, passwd): if self.method == "rsync": self.rsyncObj = Rsync(server, uname, passwd) elif self.method == "sftp": self.sftpObj = SFtp(server, uname, passwd) def copy(self, src, dest, toServer=None): self.copyObj = Copy() if self.method == "rsync": if not toServer == None: self.rsyncObj.run(src, dest, toServer) else: raise TransferError("Did not specify transfer " + "direction") return if os.path.isdir(src): if self.method == "sftp": raise TransferError("Cannot transfer directories " + "using sftp") else: self.copyObj.copytree(src, dest) else: if self.method == "sftp": if os.path.isdir(dest): raise TransferError("Cannot transfer to dir " + "using sftp") self.sftpObj.copy_file(src, dest) else: self.copyObj.copy(src, dest)
def setServerParams(self, server, uname, passwd): if self.method == "rsync": self.rsyncObj = Rsync(server, uname, passwd) elif self.method == "sftp": self.sftpObj = SFtp(server, uname, passwd)