def _on_file_moved(self, event: FileSystemMovedEvent): """ Called when a file in the monitored directory has been moved. Breaks move down into a delete and a create (which it is sometimes detected as!). :param event: the file system event """ if not event.is_directory and self.is_data_file(event.src_path): delete_event = FileSystemEvent(event.src_path) delete_event.event_type = EVENT_TYPE_DELETED self._on_file_deleted(delete_event) create_event = FileSystemEvent(event.dest_path) create_event.event_type = EVENT_TYPE_CREATED self._on_file_created(create_event)
def initial_processing(self, watch_directories, event_handler): for watch_directory in watch_directories: for root, dir_names, file_names in os.walk(watch_directory): for filename in file_names: file_path = os.path.join(root, filename).decode('utf-8') if file_path not in self.mfq or ( file_path in self.mfq and self.mfq[file_path].status != MediaFileState.FAILED): file_event = FileSystemEvent(file_path) file_event.is_directory = False file_event.event_type = EVENT_TYPE_CREATED event_handler.on_any_event(file_event)
def on_moved(self, event): """ File/Folder moved/renamed All changes are marked as moved even it was renamed Due to File moved, Folder moved events got trigger in an event of Folder renamed so we have to find a way to filter this noise :param event: :return: """ src_path, src_name = os.path.split(event.src_path) path, name = os.path.split(event.dest_path) pp, prev_parent_name = os.path.split(src_path) pp, parent_name = os.path.split(path) if prev_parent_name != parent_name: self.process(event) if src_name != name: renamedEvent = FileSystemEvent(event.src_path) renamedEvent.event_type = 'renamed' renamedEvent.is_directory = event.is_directory renamedEvent.dest_path = event.dest_path self.process(renamedEvent)
def do_first_run_event(name: str) -> None: event = FileSystemEvent(name) event.event_type = _FIRST_RUN_EVENT self._on_event_thrown(event)