in ees_network_drive/files.py [0:0]
def is_file_present_on_network_drive(self, smb_connection, drive_name, folder_path,
file_structure, ids_list, visited_folders, deleted_folders):
"""Checks that folder/file present in Network Drives or not
:param smb_connection: connection object
:param drive_name: service name of the Network Drives
:param folder_path: the relative path of the folder
:param file_structure: dictionary containing folder and list of files inside the folder
:param ids_list: list of id's of deleted files
:param visited_folders: list of visited path of folders
:param deleted_folders: list of deleted path of folders
Returns:
folder_deleted: boolean value indicating folder is deleted or not
"""
folder_deleted = False
try:
drive_path = Path(self.drive_path)
available_files = smb_connection.listPath(drive_path.parts[0], folder_path)
for file in available_files:
if file_structure[folder_path].get(file.filename):
file_structure[folder_path].pop(file.filename)
ids_list.extend(list(file_structure[folder_path].values()))
visited_folders.append(folder_path)
except Exception as exception:
status = exception.smb_messages[-1].status
if status in [STATUS_NO_SUCH_FILE, STATUS_NO_SUCH_DEVICE, STATUS_OBJECT_NAME_NOT_FOUND]:
for folder in file_structure.keys():
if folder_path in folder:
deleted_folders.append(folder)
self.logger.info(f"{folder} entire folder is deleted.")
deleted_folders.append(folder_path)
return True
elif status == STATUS_OBJECT_PATH_NOT_FOUND:
folder_path, _ = os.path.split(folder_path)
folder_deleted = self.is_file_present_on_network_drive(smb_connection, drive_name, folder_path,
file_structure,
ids_list, visited_folders, deleted_folders)
else:
self.logger.exception(f"Error while retrieving files from drive {drive_name}.Error: {exception}")
return folder_deleted