Generated: Sun 2014-03-16 19:26 GMT
Source file: /var/www/service.dev/service/ftp_deploy/utils/ftp.py
Stats: 51 executed, 0 missed, 3 excluded, 29 ignored
import osfrom ftplib import FTPfrom .decorators import checkclass ftp_connection(object): """FTP Connection helper. Provide methods to manage ftp resources""" def __init__(self, host, username, password, ftp_path): self.host = host self.username = username self.password = password self.ftp_path = self.encode(ftp_path) self.connected = 0 def connect(self): """Initialize FTP Connection""" self.ftp = FTP(self.host) self.ftp.login(self.username, self.password) self.connected = 1 def create_file(self, file_path, content): """Create file populated with 'content' and save to 'file_path' location""" file_path = self.encode(file_path) self.ftp.storbinary('STOR ' + self.ftp_path + file_path, content) def remove_file(self, file_path): """Remove file from 'file_path' location, and clear empty directories""" file_path = self.encode(file_path) self.ftp.delete(self.ftp_path + file_path) dirname = file_path.split('/') for i in xrange(len(dirname)): current = '/'.join(dirname[:-1 - i]) try: self.ftp.rmd(self.ftp_path + current) except Exception, e: return False def make_dirs(self, file_path): """ Create FTP tree directories based on 'file_path'""" file_path = self.encode(file_path) dirname = os.path.dirname(file_path).split('/') for i in xrange(len(dirname)): current = '/'.join(dirname[:i + 1]) try: self.ftp.dir(self.ftp_path + current) except Exception, e: self.ftp.mkd(self.ftp_path + current) def encode(self, content): """Encode path string""" return str(content).encode('ascii', 'ignore') def quit(self): """Close FTP Connection""" return self.ftp.quit() if self.connected else Falseclass ftp_check(ftp_connection): """Check FTP Connection, return True if fail""" @check('FTP') def check_ftp_login(self): self.connect() @check('FTP') def check_ftp_path(self): self.ftp.cwd(self.ftp_path) self.ftp.cwd('/') def check_all(self): status = self.check_ftp_login() if status[0] == True: return status status = self.check_ftp_path() if status[0] == True: return status return False, ''