Skip to content

Commit

Permalink
Merge pull request #2 from umich-its-ai/team-folder-fix
Browse files Browse the repository at this point in the history
team access fix + fixed error handling
  • Loading branch information
haashim-mirza authored Jul 9, 2024
2 parents 9ef537f + 843e946 commit af02957
Showing 1 changed file with 15 additions and 20 deletions.
35 changes: 15 additions & 20 deletions dropbox_langchain/dropbox_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def _load_file(self, dbx, file_path) -> List[Document]:
dbx.files_export_to_file(download_path=download_path, path=file_path, export_format="markdown")
file_documents = file_documents + self._load_md_file(file_path, download_path, source)
except dropbox.exceptions.DropboxException as error:
self.logMessage(message={"message": error.error, "file": file_path}, level='WARNING')
self.logMessage(message={"message": error, "file": file_path}, level='WARNING')
else:
# Download file
with tempfile.TemporaryDirectory() as temp_dir:
Expand Down Expand Up @@ -262,7 +262,7 @@ def _load_file(self, dbx, file_path) -> List[Document]:
file_documents = file_documents + self._load_rtf_file(file_path, download_path, source)

except dropbox.exceptions.DropboxException as error:
self.logMessage(message={"message": error.error, "file": file_path}, level='WARNING')
self.logMessage(message={"message": error, "file": file_path}, level='WARNING')

else:
self.invalid_files.append()
Expand Down Expand Up @@ -322,7 +322,7 @@ def _load_files_from_folder_path(self, dbx, folder_path) -> List[Document]:
file_paths=file_paths
)
except dropbox.exceptions.DropboxException as error:
self.errors.append({"message": error.error, "folder": folder_path})
self.errors.append({"message": error, "folder": folder_path})

return file_documents

Expand Down Expand Up @@ -357,19 +357,19 @@ def logMessage(self, message, level):
level=level
))

def list_folders(self, dbx, path_root=None):
def list_folders(self, dbx, root_namespace_id=None):
import dropbox
entries_info = []
try:
headers = {"Dropbox-API-Path-Root": path_root} if path_root else {}
files = None
found_all_records = False
dbx = dbx.with_path_root(dropbox.common.PathRoot.root(root_namespace_id)) if root_namespace_id else dbx

while not found_all_records:
if files is None:
files = dbx.files_list_folder("", recursive=False, include_deleted=False, headers=headers)
files = dbx.files_list_folder("", recursive=False, include_deleted=False)
else:
files = dbx.files_list_folder_continue(files.cursor, headers=headers)
files = dbx.files_list_folder_continue(files.cursor)

for entry in files.entries:
if isinstance(entry, dropbox.files.FolderMetadata):
Expand All @@ -382,7 +382,7 @@ def list_folders(self, dbx, path_root=None):
found_all_records = True

except dropbox.exceptions.DropboxException as error:
print(f"DropboxException: {error.error}")
self.errors.append({"message": error})
return entries_info

def get_folders(self):
Expand All @@ -392,18 +392,13 @@ def get_folders(self):
account_info = dbx.users_get_current_account()
root_namespace_id = account_info.root_info.root_namespace_id

root_entries_info = self.list_folders(dbx, json.dumps({
".tag": "namespace_id",
"namespace_id": root_namespace_id
}))

root_entries_info = self.list_folders(dbx, root_namespace_id)
personal_entries_info = self.list_folders(dbx)

all_entries_info = root_entries_info + personal_entries_info

return all_entries_info
except dropbox.exceptions.DropboxException as error:
print(f"DropboxException: {error.error}")
self.errors.append({"message": error})
return []

def load(self) -> List[Document]:
Expand Down Expand Up @@ -442,7 +437,7 @@ def load(self) -> List[Document]:
dbx_personal = dropbox.Dropbox(**args)
account_info = dbx_personal.users_get_current_account()
except dropbox.exceptions.DropboxException as error:
self.errors.append({"message": error.error})
self.errors.append({"message": error})
return []

# Initialize a new Dropbox object for team folders with the appropriate headers
Expand All @@ -455,7 +450,7 @@ def load(self) -> List[Document]:
}
dbx_team = dropbox.Dropbox(oauth2_access_token=self.auth['access_token'], headers=headers)
except dropbox.exceptions.DropboxException as error:
self.errors.append({"message": error.error})
self.errors.append({"message": error})
return []

# Use the appropriate Dropbox client based on the folder type
Expand All @@ -465,21 +460,21 @@ def load(self) -> List[Document]:
if self.folder_path is not None:
return self._load_files_from_folder_path(
dbx=dbx,
folder_path=self.folder_path
folder_path=self.folder_path,
)

if self.file_paths is not None:
return self._load_files_from_paths(
dbx=dbx,
file_paths=self.file_paths
file_paths=self.file_paths,
)

return self._load_file(
dbx=dbx,
file_path=self.file_path
)
except dropbox.exceptions.DropboxException as error:
self.errors.append({"message": error.error})
self.errors.append({"message": error})

return []

Expand Down

0 comments on commit af02957

Please sign in to comment.