Browse Source

mkdirs works

event_class
Raphael Roberts 7 years ago
parent
commit
11c29d5f15
  1. 18
      gapi/drive_api.py

18
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

Loading…
Cancel
Save