class CloudInterface(object): def __init__(self,user,password): self.pc = PyCloud(user,password) def uploadFiles(self,localpath,folderid): pcfilesuploads = [] results = [] for dirpath, dirnames, filenames in os.walk(localpath): for n in filenames: pcfilesuploads.append(localpath+n) for f in pcfilesuploads: results.append(self.pc.uploadfile(files=[f],folderid=folderid)) return results def cloneFolders(self,localpath,folderid): subfolders = os.listdir(localpath) folderlist = self.pc.listfolder(folderid=folderid) current_folder = {}; # find current folders to decide which folders we need. for value in folderlist['metadata']['contents']: if (value.get('isfolder')): current_folder[value.get('name','')] = value.get('folderid',0) for folder in subfolders: if folder not in current_folder: # creates new folder and its it to current folder list results = self.pc.createfolder(folderid=folderid,name=folder) if results['result'] == 0: current_folder[folder] = results['metadata']['folderid'] return current_folder; def getFiles(self,folder=True,folderid=0): ls = self.pc.listfolder(folderid=folderid) folders = {} for item in ls['metadata']['contents']: if folder and (item.get('isfolder')): folders[item.get('name','')] = item.get('folderid',0) elif folder == False and item.get('isfolder') == False: folders[item.get('name','')] = item.get('fileid') return folders def getConfig(self,folderid=0): # this gets configuration file from pcloud pass
match = False last = i == folder_split[-1] for j in dir_list: if j['name'] == i and j['isfolder']: folder_walk.append(j['folderid']) match = True if last: Logger.error(__name__, "Ooops new event exists on pCloud") sys.exit(0) break if not match and not last: Logger.error(__name__, "pCloud folder walk: Could not find \"{0}\"".format(i)) sys.exit(0) Logger.success(__name__,"New event name doesnt currently exist on pCloud") r = pcloud.createfolder(path=new_event_pc_path, folderid=folder_walk[-1] ) if r['result'] != 0: Logger.error(__name__,"Failed to create pCloud folder - {0}".format(new_event_pc_path)) else: Logger.success(__name__,"New pCloud folder created - {0}".format(new_event_pc_path)) #Check photodb doesnt already contain table for new event r = requests.get("{0}/rest/{1}/1".format( cfg.get("upload__photodb_url"), new_event )) if r.status_code != 500: Logger.error(__name__,"photodb table for new event already exists!") sys.exit(0) Logger.success(__name__,"photodb table for new event doesnt exist")