in ees_microsoft_teams/microsoft_teams_channels.py [0:0]
def get_folder_documents(
self, team_id, drive_id, document_id, schema, documents, ids_list, parent_file_id, start_time,
end_time, team_name):
""" Fetches the files from the folder recursively
:param team_id: Team id
:param drive_id: Drive id
:param document_id: Folder id
:param schema: Schema for workplace fields and Microsoft Teams fields
:param documents: Document id storage
:param ids_list: Shared storage for storing the document ids
:param parent_file_id: Parent document id of current file/folder
:param start_time: Starting time for fetching data
:param end_time: Ending time for fetching data
:param team_name: Team name for log message
Returns:
documents: list of documents containing the channel documents details
"""
folder_files_url = f"{constant.GRAPH_BASE_URL}/groups/{team_id}/drives/{drive_id}/items/{document_id}/children"
folder_files_response = self.client.get_channel_documents(
next_url=folder_files_url, start_time=start_time, end_time=end_time,
object_type=constant.CHANNEL_DOCUMENTS, team_name=team_name)
if not folder_files_response:
return documents
for document in folder_files_response:
# Logic to append recursive files/folders for deletion
self.local_storage.insert_document_into_doc_id_storage(
ids_list, document["id"], constant.CHANNEL_DOCUMENTS, document_id, parent_file_id)
document_data = {"type": constant.CHANNEL_DOCUMENTS}
if document.get("folder") and type(document.get("folder")) != float:
self.get_folder_documents(
team_id, drive_id, document["id"],
schema, documents, ids_list, document_id, start_time, end_time, team_name)
for workplace_search_field, microsoft_teams_filed in schema.items():
document_data[workplace_search_field] = document[microsoft_teams_filed]
document_data["_allow_permissions"] = []
if self.is_permission_sync_enabled:
document_data["_allow_permissions"] = [team_id]
document_data["body"] = self.get_attachment_content(document)
documents.append(document_data)
return documents