From 11c29d5f15d879cdc3e1d5bfa4004c4dbd9f38f9 Mon Sep 17 00:00:00 2001 From: Raphael Roberts Date: Fri, 16 Nov 2018 21:31:40 -0600 Subject: [PATCH] mkdirs works --- gapi/drive_api.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gapi/drive_api.py b/gapi/drive_api.py index d31a81b..0de8be1 100644 --- a/gapi/drive_api.py +++ b/gapi/drive_api.py @@ -60,31 +60,33 @@ class drive_api(API): else: if not 'folders' in parent.keys(): self.__fill_in__(parent) - ret = parent['folders'][end][0] + ret = parent['folders'][end] if no_parent: - ret = without(ret,'parent') + ret[0] = without(ret[0],'parent') return ret except KeyError: raise FileNotFoundError() def upload(self,local_path,remote_path): + isdir = os.path.isdir(local_path) try: fid = get_file_by_path(remote_path) except FileNotFoundError: - pass def mkdirs(self,path): + '''makes directories if they do not exist already''' if isinstance(path,str): path = split_path(path) missing = [] for i in range(len(path),-1,-1): try: - parent = self.get_file_by_path(path[:i],True) + parent = self.get_file_by_path(path[:i],False,no_parent = False) break except FileNotFoundError: missing.append(path[i-1]) while len(missing) > 0: - new_folder = {} + + new_folder = {'folders':{}} name = missing.pop() new_meta = self.__create_remote_folder__(name,parent) del new_meta['name'] @@ -92,14 +94,14 @@ class drive_api(API): new_folder[0] = new_meta parent['folders'][name] = new_folder parent = new_folder - + return parent def __create_remote_folder__(self,name,parent): meta = { 'name':name, 'mimeType':'application/vnd.google-apps.folder', 'parents' : [parent[0]['id']] } - return self.files().create(body = meta).execute() + return self.service.files().create(body = meta).execute() # finds all files and folders from a parent def __fill_in__(self,parent): @@ -122,7 +124,7 @@ class drive_api(API): first = True while page_token or first: first = False - response = self.service.files().list(q = "'{}' in parents".format(parent_id),pageToken=page_token).execute() + response = self.service.files().list(q = "'{}' in parents and trashed = false".format(parent_id),pageToken=page_token).execute() page_token = response.get('nextPageToken',None) for file in response['files']: yield file