diff --git a/docs/events/index.rst b/docs/events/index.rst index 483ee2d1..d8b1823c 100644 --- a/docs/events/index.rst +++ b/docs/events/index.rst @@ -166,20 +166,36 @@ UpdatedFiles Support for the ``gcode`` type will be removed in the next release after version 1.2.0. MetadataAnalysisStarted - The metadata analysis of a GCODE file has started. + The metadata analysis of a file has started. Payload: - * ``file``: the file's name + * ``name``: the file's name + * ``path``: the file's path within its storage location + * ``origin``: the file's origin storage location -MetadataAnalaysisFinished - The metadata analysis of a GCODE file has finished. + .. deprecated:: 1.3.0 + + * ``file``: the file's path within its storage location + + Still available for reasons of backwards compatibility. Will be removed with 1.4.0. + +MetadataAnalysisFinished + The metadata analysis of a file has finished. Payload: - * ``file``: the file's name + * ``name``: the file's name + * ``path``: the file's path within its storage location + * ``origin``: the file's origin storage location * ``result``: the analysis result -- this is a python object currently only available for internal use + .. deprecated:: 1.3.0 + + * ``file``: the file's path within its storage location + + Still available for reasons of backwards compatibility. Will be removed with 1.4.0. + FileSelected A GCODE file has been selected for printing. diff --git a/src/octoprint/filemanager/__init__.py b/src/octoprint/filemanager/__init__.py index 94175345..1ebeaaee 100644 --- a/src/octoprint/filemanager/__init__.py +++ b/src/octoprint/filemanager/__init__.py @@ -209,9 +209,10 @@ class FileManager(object): counter = 0 for entry, path, printer_profile in storage_manager.analysis_backlog: file_type = get_file_type(path)[-1] + file_name = storage_manager.split_path(path) # we'll use the default printer profile for the backlog since we don't know better - queue_entry = QueueEntry(entry, file_type, storage_type, path, self._printer_profile_manager.get_default()) + queue_entry = QueueEntry(file_name, entry, file_type, storage_type, path, self._printer_profile_manager.get_default()) self._analysis_queue.enqueue(queue_entry, high_priority=False) counter += 1 self._logger.info("Added {counter} items from storage type \"{storage_type}\" to analysis queue".format(**locals())) @@ -393,11 +394,12 @@ class FileManager(object): file_object = hook_file_object file_path = self._storage(destination).add_file(path, file_object, links=links, printer_profile=printer_profile, allow_overwrite=allow_overwrite) absolute_path = self._storage(destination).path_on_disk(file_path) + _, file_name = self._storage(destination).split_path(file_path) if analysis is None: file_type = get_file_type(absolute_path) if file_type: - queue_entry = QueueEntry(file_path, file_type[-1], destination, absolute_path, printer_profile) + queue_entry = QueueEntry(file_name, file_path, file_type[-1], destination, absolute_path, printer_profile) self._analysis_queue.enqueue(queue_entry, high_priority=True) else: self._add_analysis_result(destination, path, analysis) diff --git a/src/octoprint/filemanager/analysis.py b/src/octoprint/filemanager/analysis.py index 85d68e3f..c1f6cd1f 100644 --- a/src/octoprint/filemanager/analysis.py +++ b/src/octoprint/filemanager/analysis.py @@ -18,12 +18,13 @@ from octoprint.events import Events, eventManager import octoprint.util.gcodeInterpreter as gcodeInterpreter -class QueueEntry(collections.namedtuple("QueueEntry", "path, type, location, absolute_path, printer_profile")): +class QueueEntry(collections.namedtuple("QueueEntry", "name, path, type, location, absolute_path, printer_profile")): """ A :class:`QueueEntry` for processing through the :class:`AnalysisQueue`. Wraps the entry's properties necessary for processing. Arguments: + name (str): Name of the file to analyze. path (str): Storage location specific path to the file to analyze. type (str): Type of file to analyze, necessary to map to the correct :class:`AbstractAnalysisQueue` sub class. At the moment, only ``gcode`` is supported here. @@ -83,7 +84,13 @@ class AnalysisQueue(object): def _analysis_finished(self, entry, result): for callback in self._callbacks: callback(entry, result) - eventManager().fire(Events.METADATA_ANALYSIS_FINISHED, {"file": entry.path, "result": result}) + eventManager().fire(Events.METADATA_ANALYSIS_FINISHED, {"name": entry.name, + "path": entry.path, + "origin": entry.location, + "result": result, + + # TODO: deprecated, remove in a future release + "file": entry.path}) class AbstractAnalysisQueue(object): """ @@ -195,7 +202,13 @@ class AbstractAnalysisQueue(object): try: self._logger.info("Starting analysis of {entry}".format(**locals())) - eventManager().fire(Events.METADATA_ANALYSIS_STARTED, {"file": entry.path, "type": entry.type}) + eventManager().fire(Events.METADATA_ANALYSIS_STARTED, {"name": entry.name, + "path": entry.path, + "origin": entry.location, + "type": entry.type, + + # TODO deprecated, remove in 1.4.0 + "file": entry.path}) try: result = self._do_analysis(high_priority=high_priority) except TypeError: